无法将前景色设置为 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; }
}
我将 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; }
}