Wpf XAML中controltemplate中元素的访问属性

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

我想使用由图像和标签组成的模板化ComboBoxItems。如果我将模板指定给ComboBoxItem,是否可以设置图像的Source属性?目标是为不同的ComboboxItem使用相同的模板,但每个项目中的图片不同

我还考虑过在模板中绑定Image.Source-Property,但这失败了,因为“parent”ComboBoxItem当然没有可以绑定的源属性

代码说明了我的问题:

    <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:来解决这个问题。