2016-07-08 7 views
0

ich einen Stil Fenster haben außer Kraft zu setzen, und ich willWie ein Datagrid-Stil

<Window.Resources>   
    <Style x:Name="dtgStyle" TargetType="{x:Type DataGridRow}"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Transparent" /> 
      </Trigger> 

     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="Background" Value="Blue" /> 
     </Trigger> 

      <Trigger Property="IsSelected" Value="False"> 
       <Setter Property="Background" Value="Transparent" /> 
      </Trigger> 
     </Style.Triggers> 

     <Setter Property="Background" Value="Transparent" /> 
     <Setter Property="Foreground" Value="White" /> 

    </Style> 
</Window.Resources> 

ein Datagrid Stil auf alle Datagrids in meiner Anwendung zu überschreiben ich thougth dies hatte zu arbeiten, aber ich habe

Style s = Resources["dtgStyle"] as Style; 
mydtg.Style = s; 
anzuwenden

jetzt möchte ich das nicht auf alle dtgs anwenden müssen. Am besten wäre es, es automatisch in XAML anzuwenden.

Thanx

--- ADD für ASh ----

Vielen Dank für Ihre Hilfe. Das einzige Problem ist, dass, wenn das Datagrid den Fokus verliert, die ausgewählte Linie im Datagrid die Farbe ändert, wie Sie im folgenden Bild sehen können (der Vordergrund wird schwarz).

enter image description here

habe ich versucht, verschiedene Eigenschaft hinzufügen, aber nichts funktioniert.

zusätzlich wird der linke Rand kühner (kein Wortspiel beabsichtigt) und größer. Irgendeine Idee, wie man es repariert? Danke

+0

'Target = "{x: Typ DataGridRow}" '. Es ist DataGridRow-Stil, nicht DataGrid. Und es sollte standardmäßig angewendet werden, da es keinen expliziten Schlüssel gibt – ASh

+0

Danke, also änderte ich den DatagridRow-Namen zu dtrStyle und fügte hinzu aber wie man den richtigen Stil jetzt hinzufügt? – Patrick

+0

@Patrick Wie Sie 'TargetType =" {x: Type DataGridRow} "' setzen, können Sie für 'DataGrid' einstellen. Was ist die große Sache? Was willst du erreichen? – AnjumSKhan

Antwort

2

Wenn Sie Standardstil für FrameworkElement benötigen, deklarieren Sie es ohne x:Key, nur mit TargetType.

Sowohl DataGridRow als auch DataGridCell haben die Eigenschaft IsSelected. Nicht genug Hintergrund zu ändern, nur für DataGridRow, es für Datagridcell als auch

<Style TargetType="{x:Type DataGrid}"> 
    <Setter Property="RowStyle" > 
     <Setter.Value> 
      <Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource {x:Type DataGridRow}}"> 
       <Setter Property="Background" Value="Transparent" /> 
       <Setter Property="Foreground" Value="White" /> 

       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Background" Value="Transparent" /> 
        </Trigger> 

        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="Background" Value="Orange" /> 
         <Setter Property="Foreground" Value="White" /> 
        </Trigger> 
       </Style.Triggers> 

      </Style> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="CellStyle"> 
     <Setter.Value> 
      <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}"> 
       <Style.Triggers> 
        <Trigger Property="IsSelected" Value="True"> 
         <Setter Property="Background" Value="Orange" /> 
        </Trigger> 

        <DataTrigger Binding="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Value="False"> 
         <Setter Property="Foreground" Value="White"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Setter.Value> 
    </Setter> 
</Style> 

fix für Vordergrund getan werden muss, wurde hier gefunden: DataGrid's selected row color when inactive (https://stackoverflow.com/a/25204493/1506454)

+0

Danke für die Hilfe ASh bitte sehen Sie meine kleine (verspätete) Bearbeitung. – Patrick

+0

@Patrick, ich habe meine Antwort mit einem Fix für Foreground aktualisiert. Ich habe auch auf Screenshot mit Magnify geschaut. Header ändert nicht seine Größe tatsächlich, nur Farbe – ASh

+0

Arbeiten wie ein Charme thanx! – Patrick