1

WPF の DataTemplates で Styles を使用する際に問題が発生しました...最悪のようです。DataTemplate を定義するとします。

<DataTemplate DataType="{x:Type local:DataSource}">
    <TextBox Style="{StaticResource TextBoxStyle}" Text="{Binding Path=myData}"  />
</DataTemplate>

この要素を動的にスタイルする方法はありますか? (例: アプリケーションの一部で背景色を変更する) 私の問題は次のとおりです。

  • 親コントロールにスタイルを設定すると、データテンプレートに既にスタイルがあるため無視されます
  • 親コントロールにプロパティを設定した場合、スタイルはプロパティの継承よりも優先されるため、継承されません

誰もこれを行う方法を見ていますか?

4

1 に答える 1

1

DynamicResource を使用して試すことができます

<DataTemplate DataType="{x:Type local:DataSource}">
        <TextBox Style="{DynamicResource TextBoxStyle}" Text="{Binding Path=myData}"  />
</DataTemplate>

その後、他のコントロールのスタイルを変更する必要がある場合。そのコントロールに対して同じキーで同じリソースを宣言するだけです。ListBox で使用しているとします。

 <ListBox>
        <ListBox.Resources>
            <Style x:Key="TextBoxStyle" TargetType="TextBox">
               <!--define changed style.-->
            </Style>
        </ListBox.Resources>
    </ListBox>

そこに新しいスタイルが適用されます。

于 2013-01-14T09:54:18.043 に答える