2009-05-27 47 views
6

Bir araç setim var: DataGrid (Codeplex'ten). görsel stil diğer bazı tetikleyiciler için Tek bir öğeye birden çok XAML stilini nasıl uygularım?

  • biri, vs için ViewModel
  • birinde bir değişkene dayalı etkinleştirmek veya devre dışı geçiş için

    • tek:

      Birçok farklı stilleri var başlıyor .

    bunların hepsi tek yolu bunu yapmak için yani büyük bir tarzda olması gerekiyor mu? Veya çoklu stilleri'a sahip olabilir ve bunlara ihtiyacım var mı? Bunu yapmak için zaten var mı? takas stilleri kodunda mı?

    Stiller:

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

    SÖZDE-KODU:

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

    11

    Sen Stil sınıfının BasedOn property bakmak isteyebilirsiniz. Temel olarak, bir stili diğerinden miras almanıza izin verir. 'Çocuk' stili, tüm setleyicilere ve üst karakterden tetikleyicilere sahip olacaktır (ebeveynlerinkini geçersiz kılan belirleyiciler olmadıkça) ve açıkça kendi ayarlayıcı ve tetikleyicileri olacaktır. Belki bu bilgi sizin için faydalı olacaktır.

    +1

    +1, bir şekilde yardımcı olduğu için, ancak iki ayrı stil kümesinin uygulanmasında/birleştirilmesinde hala yardımcı olmaz. Maalesef, basit bir yarı-mirastan başka, onların 'çoğunu' uygulamaya koymanın bir yolu olmadığı da oldukça muhtemeldir. – quetzalcoatl

    +0

    cevabı burada olabilir: http://stackoverflow.com/questions/16096/how-to-apply-multiple-styles-in-wpf –

    İlgili konular