2011-01-27 10 views
1

は、それが各パネルの境界線を作成し、パネルのスタイルを定義し子供用/親用のトリガーを使用したパネル/境界線用のWPFスタイル?

  • にXAMLで可能ですか?
  • アイテムまたはその子が選択されているときに祖先アイテムのスタイル(境界線の背景)を変更しますか?

すなわち

<StackPanel Style="{StaticResource WidgetStyle}"> 
    <Label /> 
    <Button /> 
    <StackPanel> 
    <ListView /> 
    </StackPanel> 
</StackPanel> 

Iは、例えば、WidgetStyleは(四捨五入)境界を定義し、境界線の色を変更したいと思いリストビューまたはボタンが選択されている場合。

ありがとうございます!

答えて

1

あなたの最初の質問に対する答えはノーです! Panelコントロールをテンプレート化することはできません。あなたはこれで何ができるのですか? StackPanelを含むカスタムコントロールを作成するなど、いくつかのオプションがあります。この質問へのansweは、かなりの数の良いアイデアが含まれます。あなたの2番目の質問について

Changing WPF StackPanel template

を、再びいいえ、あなただけでスタイリングして子でスタイルの変化に基づいて祖先のスタイルを設定することはできません。あなたは、要素のいくつかのプロパティを一緒に接続するためのバインディングのElementNameを使用することができ

:上記で

<Border Background={Binding ElementName=MyButton, Path=Tag>> 
    <StackPanel Style="{StaticResource WidgetStyle}"> 
    <Label /> 
    <Button x:Name="MyButton"/> 
    <StackPanel> 
     <ListView /> 
    </StackPanel> 
    </StackPanel> 
</Border> 

を、境界線の背景は、ボタンのTagプロパティにバインドされている「MyButtonという」あなたは、スタイルを適用することができますTagプロパティを設定するボタンに移動し、境界線の背景を変更します。

+0

ありがとうございました! >>あなたの2番目の質問については、もう一度いいえ、スタイリングだけで子供のスタイルの変化に基づいて祖先をスタイルすることはできません。<<あなたの答えが変わったかどうかわかりませんが、プロパティの変更に基づいてスタイルを変更しようとしています例えばIsEnabled)スタイルではありません。乾杯 – DaveO

関連する問題