Wpf XAML中controltemplate中元素的访问属性
我想使用由图像和标签组成的模板化ComboBoxItems。如果我将模板指定给ComboBoxItem,是否可以设置图像的Source属性?目标是为不同的ComboboxItem使用相同的模板,但每个项目中的图片不同 我还考虑过在模板中绑定Image.Source-Property,但这失败了,因为“parent”ComboBoxItem当然没有可以绑定的源属性 代码说明了我的问题:Wpf XAML中controltemplate中元素的访问属性,wpf,xaml,wpf-controls,controltemplate,Wpf,Xaml,Wpf Controls,Controltemplate,我想使用由图像和标签组成的模板化ComboBoxItems。如果我将模板指定给ComboBoxItem,是否可以设置图像的Source属性?目标是为不同的ComboboxItem使用相同的模板,但每个项目中的图片不同 我还考虑过在模板中绑定Image.Source-Property,但这失败了,因为“parent”ComboBoxItem当然没有可以绑定的源属性 代码说明了我的问题: <Style x:Key="ComboBoxPictureItem" TargetType="{x
<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>
比如:StatusImage.Source=“PathToMyImage.png”/>
谢谢大家! 您应该使用模板绑定来公开内部属性,例如,将标签的内容绑定到ComboBoxItem的内容:
<Label Content="{TemplateBinding Content}"/>
如果现在将图像外的内容设置为传输到标签,则可以对图像执行相同的操作,但如果希望以继承ComboBoxItem并创建更多属性的方式执行操作,则可能会耗尽属性
在这里,我不认为您真的想弄乱控件模板,只需使用
ItemTemplate
来指定项目的外观。使用从ComboBoxItem继承的我自己的类是一个可能的解决方案,我只是认为可能有更简单的方法。感谢您对ItemTemplate的提示,这比使用全新的ControlTemplate更符合我的要求。我可能会对如下所示的项目使用DataTemplate:来解决这个问题。