我想使用模板化的ComboBoxItems,它包含一个Image和一个Label。如果我将模板分配给ComboBoxItem,我可以以某种方式设置图像的Source-Property吗?目标是为不同的ComboBoxItem使用相同的模板,但在每个Item中使用不同的图片。
我还想过在模板中绑定Image.Source-Property,但是这会失败,因为“父”ComboBoxItem当然没有我可以绑定的Source-Property。
代码说明了我的问题:
<Style x:Key="ComboBoxPictureItem" TargetType="{x:Type ComboBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<StackPanel Orientation="Horizontal">
<Image x:Name="StatusImage" />
<Label x:Name="StatusLabel" Content="Green"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ComboBox>
<ComboBoxItem Style="{StaticResource ResourceKey=ComboBoxPictureItem}"
-> sth. like: StatusImage.Source="PathToMyImage.png"/>
</ComboBox>
谢谢!
答案 0 :(得分:0)
您应该使用模板绑定来公开内部属性,例如将Label的内容绑定到ComboBoxItem的内容:
<Label Content="{TemplateBinding Content}"/>
如果你现在设置外部的内容被转移到标签,你可以为图像做同样的事情,你可能会用尽属性,如果你想做的事情你可以继承ComboBoxItem并创建更多属性。
在这里,我认为您不想真正搞乱控制模板,只需使用ItemTemplate
来指定项目的外观。