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

Cannot set Foreground Color to a TreeView DataTemplate TextBlock (MVVM)

我将 TreeNode 项目列表绑定到树视图。我无法将前景色绑定到 DataTemplate TextBlock。

最初我认为这是一个绑定问题,所以我尝试手动给它一个颜色,即 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; }
    }

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

ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TreeNode'

这意味着您要添加的 TreeView 项无需 DataTemplate 即可直接添加。

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

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

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