我在Layer
中显示的TreeView
个对象有一些颜色。现在我使用这样的东西:
<GridViewColumn Width="300">
<GridViewColumnHeader Content="Layers" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel MouseLeftButtonDown="Layers_MouseLeftButtonDown" Orientation="Horizontal">
<Image Width="15"
Height="15"
Source="{Binding ImageFromColor}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
原始颜色值将从Layer
本身访问(绑定),如下所示:
layer.Color
类型System.Drawing.Color
。但是如果能让事情变得更容易,我可以将类型更改为其他类型。
在性能和优雅方面,最好的方法是什么?
我会有几千个TreeView
项目,这会产生影响。
答案 0 :(得分:4)
我没有使用TreeView(仅使用ListBox)自己尝试,但也许值得一试:
<DataTemplate>
<!-- your additional container -->
<Canvas Width="15" Height="15">
<Canvas.Background>
<SolidColorBrush Color="{Binding Path=ColorProperty}" />
</Canvas.Background>
</Canvas>
<!-- end of container -->
</DataTemplate>
此方法使用直接绑定到color属性,因此不需要创建图像(例如,通过转换器)。
但绝对建议您尝试一下,看看它是否适用于数以千计的物品。