Как я могу применить несколько стилей XAML к одному элементу? - PullRequest
6 голосов
/ 27 мая 2009

У меня есть инструментарий: DataGrid (из Codeplex).

Он начинает иметь много разных стилей:

  • один для включения и выключения на основе переменной в ViewModel
  • один для визуального оформления
  • один для некоторых других триггеров и т. Д.

Все ли это должно быть в одном большом стиле , это единственный способ сделать это? Или я могу иметь несколько стилей и прикреплять их по мере необходимости? Есть ли в любом случае сделать это, чтобы вы могли, например, обмен стилей в коде ?

Стили:

<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}"/>

1 Ответ

11 голосов
/ 27 мая 2009

Возможно, вы захотите взглянуть на BasedOn свойство класса Style. По сути, это позволяет вам наследовать один стиль от другого. Стиль 'child' будет иметь все установщики и триггеры от родительского (если только он не имеет сеттеров, переопределяющих родительские), плюс у него, очевидно, будут свои собственные установщики и триггеры.

Может быть, эта информация будет полезна для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...