6

私はツールキットを持っています:DataGrid(Codeplexから)。

それは多くの異なるスタイルを持ち始めています:

  • ViewModel の変数に基づいてオンとオフを切り替えるためのもの
  • 1 つはビジュアル スタイリング用
  • 1つは他のトリガーなどです。

これらすべてを1 つの大きなスタイルにする必要がありますか?それが唯一の方法ですか? または、複数のスタイルを用意して、必要に応じて添付することはできますか? コードでスタイルを交換するなど、これを行う方法はありますか?

スタイル:

<Style x:Key="CodePlexDataGridSwapper" TargetType="toolkit:DataGrid">
    <Style.Triggers>
        <DataTrigger Binding="{Binding WhichGrid}" Value="Infragistics">
            <Setter Property="toolkit:DataGrid.Visibility" Value="Collapsed"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

<Style x:Key="ToolkitDataGridLayout" TargetType="toolkit:DataGrid">
    <Setter Property="Background" Value="Yellow"/>
</Style>

疑似コード:

<toolkit:DataGrid 
    Style="{StaticResource CodePlexDataGridSwapper, ToolkitDataGridLayout}" 
    ItemsSource="{Binding Customers}"/>
4

1 に答える 1

11

Style クラスのBasedOn プロパティを参照してください。基本的に、あるスタイルを別のスタイルから継承できます。「子」スタイルには、親のものからのすべてのセッターとトリガーがあります (親のセッターをオーバーライドするセッターがない限り) 加えて、明らかに独自のセッターとトリガーがあります。

たぶん、この情報はあなたにとって役立つでしょう。

于 2009-05-27T17:45:37.717 に答える