2009-05-27 18 views
6

Mam zestaw narzędzi: DataGrid (z Codeplex).Jak mogę zastosować wiele stylów XAML do jednego elementu?

To zaczyna mieć wiele różnych stylów:

  • jeden do przełączania go i wyłączanie w oparciu o zmienną w ViewModel
  • jednym dla stylizacji wizualnej
  • jednym dla niektórych innych wyzwalaczy, etc

Czy wszystkie te elementy muszą być w jednym stylu jeden wielki styl, czy to jedyny sposób na zrobienie tego? Czy mogę mieć wiele stylów i dołączyć je tak, jak ich potrzebuję? Czy mimo to można to zrobić, aby można było np. zamienia style w kodzie?

Style:

<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> 

pseudo-kod:

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

Odpowiedz

11

może warto spojrzeć na BasedOn property klasy stylu. Zasadniczo pozwala dziedziczyć jeden styl z drugiego. Styl "potomny" będzie zawierał wszystkie setery i wyzwalacze z rodzica (chyba że posiada on setery, które mają pierwszeństwo nad rodzicielskimi), a ponadto będzie miał oczywiście swój własny ustawiacz i wyzwalacze.

Może ta informacja będzie dla Ciebie pomocna.

+1

+1, ponieważ nieco pomaga, ale nadal nie pomaga w stosowaniu/łączeniu więcej niż dwóch osobnych zestawów stylów. Niestety, jest całkiem prawdopodobne, że oprócz prostego opartego na połowie dziedziczenia nie ma możliwości zastosowania "wielu" z nich. – quetzalcoatl

+0

odpowiedź może być tutaj: http: //stackoverflow.com/questions/16096/how-to-apply-multiple-styles-in-wpf –

Powiązane problemy