2010-07-07 5 views
26

je le style suivant, mais je dois le faire par programme:Comment définir le style par programme

<xcdg:DataGridControl MinHeight="300" 
         Name="listViewUnallocated" 
         ItemsSource="{Binding Source={StaticResource 
             cvs_unallocatedTerminals}}" 
         AllowDrop="True" 
         Drop="Grid_Drop" 
         MouseMove="Grid_MouseMove" 
         KeyUp="listViewUnallocated_KeyUp" 
         MouseDoubleClick="gridUnallocated_MouseDoubleClick" 
         ReadOnly="True" 
         DockPanel.Dock="Top"> 
    <xcdg:DataGridControl.Resources> 
     <Style TargetType="{x:Type xcdg:DataRow}" x:Name="selectedStyleTrigger"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding TerminalId}" Value="72948028"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </xcdg:DataGridControl.Resources> 

Répondre

36

Dans le fichier code-behind du contrôle, essayez:

this.Style = Resources["ResourceName"] as Style; 
+2

Quelle est la différence entre FindResource ("ResourceName") et Resources ["ResourceName"]? – SepehrM

+0

Avec cela, je ne pouvais pas trouver le style sur le constructeur d'un Window, mais avec la méthode 'FindResource' que je pouvais. (C'est une classe abstraite, héritée à plusieurs endroits et sans XAML défini.) – ANeves

21

Set x:Key en XAML & dans le code-behind utilisation:

something.Style = (Style) FindResource("YourResourceKey"); 
0

Salut, nous pouvons définir le style programmaticall j'aime ça.

Style rowStyle = new Style(typeof(DataGridRow)); 

DataTrigger dataTrigger = new DataTrigger("TerminalId"); 
Binding binding = new Binding(); 
dataTrigger.Binding = binding; 
dataTrigger.Value = 72948028; 

Setter setter = new Setter(DataGridRow.BackgroundProperty, Brushes.Red); 

dataTrigger.Setters.Add(setter); 

rowStyle.Triggers.Add(dataTrigger); 
listViewUnallocated.RowStyle = rowStyle; 
Questions connexes