2011-07-12 35 views
0

ItemStainorを使ってアイテムに含まれるItemContainerのスタイルを持っています。それはうまく動作します。しかし、実行時にプロパティが変更される可能性がありますが、スタイルは即時に更新されません。wpfで実行時のスタイルを更新

変更が保存されるとすぐに更新するようにしてもらえますか?

答えて

1

はDataTriggerおよび例えばオブジェクト

のタイプを返しコンバータを使用し、

<Style.Triggers> 
    <DataTrigger Binding="{Binding Converter=ObjectToTypeConverter}" 
       Value="{x:Type local:Person}"> 
     <Setter Property="ItemTemplate" Value="{Binding PersonTemplate}" /> 
    </DataTrigger> 
    <DataTrigger Binding="{Binding Converter=ObjectToTypeConverter}" 
       Value="{x:Type local:Business}"> 
     <Setter Property="ItemTemplate" Value="{Binding BusinessTemplate}" /> 
    </DataTrigger> 
</Style.Triggers> 
+0

ここで、アイテムのDataTemplateを正しく変更しますか? ItemContainerTemplateを変更することはできません。コントロールの作成時に依存プロパティによって設定されるため、DataTemplateへのアクセス権がありません。 –

+0

ItemContainerStyle内に含まれるオブジェクトに実際にバインドできますか?はいの場合、これは実際に動作する可能性があります。 –

+0

私は驚いたことに、ItemContainersControlTemplate内の想定されたオブジェクトにバインドするだけで、うまく動作します。 –

1

バインディングを使用してください。次に、INotifyPropertyChangedを実装する必要があります。設定している値はプロパティでなければならず、セッターの最後ではプロパティ変更イベントを発生させます。

XAMLの例を挙げておけば、私はあなたのためにそれを書くことができます。

+0

問題は、私は結合されません。 ListBox内でItemContainerStyleSelectorを使用しています。リストのオブジェクトがいろいろな種類のものになる可能性があり、私のスタイルに基づいているプロパティを持っていない可能性があるため、バインドできるかどうかはわかりません。これはstyleSelectorでチェックするものです。 –

関連する問題