2009-05-27 32 views
6

Tôi có một bộ công cụ: DataGrid (từ Codeplex).Làm cách nào để áp dụng nhiều kiểu XAML cho một phần tử?

Người ta bắt đầu có nhiều phong cách khác nhau:

  • một cho chuyển nó vào và tắt dựa trên một biến trong ViewModel
  • một cho phong cách visual
  • một cho một số trigger khác, vv .

Tất cả những thứ này cần phải ở trong một phong cách lớn, đó là cách duy nhất để làm điều đó? Hoặc tôi có thể có nhiều kiểu và đính kèm chúng khi tôi cần chúng không? Có cách nào để thực hiện việc này để bạn có thể, ví dụ: kiểu trao đổi trong mã?

Styles:

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

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

Trả lời

11

Bạn có thể muốn nhìn vào BasedOn property của lớp Style. Về cơ bản, nó cho phép bạn kế thừa một phong cách khác. Phong cách 'trẻ em' sẽ có tất cả các trình cài đặt và trình kích hoạt từ trình cha mẹ (trừ khi nó có các bộ định vị ghi đè các phần tử của bố mẹ) cộng với nó sẽ có trình thiết lập và kích hoạt của riêng nó.

Có thể thông tin này sẽ hữu ích cho bạn.

+1

+1 vì nó có phần giúp ích, nhưng nó vẫn không giúp áp dụng/sáp nhập nhiều hơn hai tập hợp kiểu riêng biệt. Unfortunatelly, nó là khá có thể xảy ra mà ngoại trừ đơn giản dựa trên bán thừa kế không có cách nào để áp dụng 'nhiều' của họ. – quetzalcoatl

+0

câu trả lời có thể ở đây: http: //stackoverflow.com/questions/16096/how-to-apply-multiple-styles-in-wpf –

Các vấn đề liên quan