如何获取当前所选项目的列表框模板属性?

时间:2011-03-18 11:31:05

标签: silverlight

我有几个列表框和一个集合。该集合由结构组成,每个结构包含几个颜色画笔。我将列表框的source属性设置为集合,然后在每个列表框的模板中,将画布的background属性绑定到其中一个画笔。每个列表框以相同的顺序显示不同但互补的颜色。

当我尝试从列表框中获取所选颜色时,我遇到了困难。所选项目是一个结构,我找不到告诉显示哪种颜色的方法。这里有一些代码来说明问题:

                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Canvas Background="{Binding colorBrush1}" Width="16" Height="16"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>

如何获取当前所选项目的模板Canvas Background属性,以便获取当前所选项目的颜色?

2 个答案:

答案 0 :(得分:0)

绑定到画笔对我来说似乎有点不对劲。我使用ValueConverter将背景绑定到“业务对象”来获取画笔。也许你可以将一个参数传递给值转换器,刷子从结构中检索。

答案 1 :(得分:0)

正如foson所提到的,如果您需要当前项目的颜色,并且该项目被绑定到提供颜色的某个对象,您应该能够直接从业务对象获取它。

根据您的示例,如果您绑定到名为MyListBox的列表框,其MyObject集合SolidColorBrush属性为colorBrush1,那么您只需获取通过((MyObject)MyListBox.SelectedItem).colorBrush1.Color选定项目的颜色。

然而,如果您确实需要对可视项本身进行更改,或者还有任何其他需要知道生成的UI控件(我最近不得不这样做),那么您可以获得{{

所选项目的1}}
ListBoxItem