2011-12-07 20 views
2

イメージとラベルで構成されるテンプレート化ComboBoxItemを使用したいと思います。テンプレートをComboBoxItemに割り当てると、どうにかイメージのSource-Propertyを設定できますか?目標は、同じテンプレートを異なるComboBoxItemsに使用することですが、各Item内の異なるピクチャを使用します。XAMLでのcontroltemplateの要素のアクセスプロパティ

また、テンプレートのImage.Sourceプロパティをバインドすることも考えましたが、「親」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

テンプレートバインディングを使用して内部プロパティを公開する必要があります(例: ComboBoxItemのコンテンツへのラベルの内容をバインド:

<Label Content="{TemplateBinding Content}"/> 

あなたは今、それがラベルに転送され、外部のコンテンツは、あなたがイメージのために同じことを行うことができます設定した場合ので、あなたがしたい場合も、あなたは性質が不足することがありComboBoxItemから継承し、より多くのプロパティを作成できるようにすることです。

ここでは、実際にコントロールテンプレートを混乱させたくないと思っています。ItemTemplateを使用してアイテムの見た目を指定してください。

+0

ComboBoxItemから継承した自分のクラスを使用することは可能な解決策ですが、もっと簡単な方法があると思っていました。 ItemTemplateのヒントをありがとう、これは完全に新しいControlTemplateを使用するよりもはるかに必要なものです。この問題を解決するには、ここに示すようにDataTemplateを適切に使用してください:http://msdn.microsoft.com/en-us/library/ms742521.aspx – schoola

関連する問題