无法将前景颜色设置为TreeView DataTemplate TextBlock(MVVM)

时间:2016-08-08 10:19:28

标签: wpf mvvm treeview bind datatemplate

我将TreeNode项列表绑定到树视图。我无法将DataTemplate TextBlock绑定到Foreground颜色。

最初我认为它是一个绑定问题,所以我试着手动给它一个颜色,即Foreground="Red",但我想这甚至不会改变我的文字颜色。

XAML:

 <TreeView  ItemsSource="{Binding TreeViewNodesPLCCode}" >
         <TreeView.ItemTemplate>
              <DataTemplate>
                  <Grid>
                     <TextBlock Text="{Binding Name}" Foreground="{Binding Path=MachineObject.Color}"/>
                     </Grid>
               </DataTemplate>
          </TreeView.ItemTemplate>
   </TreeView>

代码:

TreeViewNodesPLCCode=new ObservableCollection<TreeNode>()

 public class TreeNode: TreeViewItem
    {
        public string Name{ get; set; }
        public Machine MachineObject { get; set; }
    }
  public class Machine
    {
        public Int32 ID { get; set; }
        public Brush Color { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

当我尝试您的代码时,我在Visual Studio中获得以下输出:

  

对于已经存在的项目,将忽略ItemTemplate和ItemTemplateSelector   ItemsControl的容器类型;类型=&#39;树节点&#39;

这意味着您要添加TreeView项,这些项目可以在没有DataTemplate的情况下直接添加。

DataTemplate用于可视化数据对象(即您的业务对象)。 TreeViewItem已有DataTemplate

要解决您的问题,请为您的班级TreeViewItem删除TreeNode的继承:

public class TreeNode
    {
        public string Name{ get; set; }
        public Machine MachineObject { get; set; }
    }