我将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; }
}
答案 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; }
}