我有几个列表框和一个集合。该集合由结构组成,每个结构包含几个颜色画笔。我将列表框的source属性设置为集合,然后在每个列表框的模板中,将画布的background属性绑定到其中一个画笔。每个列表框以相同的顺序显示不同但互补的颜色。
当我尝试从列表框中获取所选颜色时,我遇到了困难。所选项目是一个结构,我找不到告诉显示哪种颜色的方法。这里有一些代码来说明问题:
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Background="{Binding colorBrush1}" Width="16" Height="16"/>
</DataTemplate>
</ListBox.ItemTemplate>
如何获取当前所选项目的模板Canvas Background属性,以便获取当前所选项目的颜色?
答案 0 :(得分:0)
绑定到画笔对我来说似乎有点不对劲。我使用ValueConverter将背景绑定到“业务对象”来获取画笔。也许你可以将一个参数传递给值转换器,刷子从结构中检索。
答案 1 :(得分:0)
正如foson所提到的,如果您需要当前项目的颜色,并且该项目被绑定到提供颜色的某个对象,您应该能够直接从业务对象获取它。
根据您的示例,如果您绑定到名为MyListBox
的列表框,其MyObject
集合SolidColorBrush
属性为colorBrush1
,那么您只需获取通过((MyObject)MyListBox.SelectedItem).colorBrush1.Color
选定项目的颜色。
然而,如果您确实需要对可视项本身进行更改,或者还有任何其他需要知道生成的UI控件(我最近不得不这样做),那么您可以获得{{
所选项目的1}}ListBoxItem