2016-09-29 6 views
0

Nachdem ich mich genau umgesehen habe, finde ich nur Leute, die nicht wissen, wie man den Hintergrund einer Zeile bei der Auswahl ändert, während ich versuche herauszufinden, wie man verhindern kann, dass sie die Farben ändert ausgewählt.
Ich habe ein DataGrid mit dynamisch generierten Spalten (was Styling für mich zu einer Herausforderung macht), die MyObjects, ein object mit der Eigenschaft IsDeleted halten. Diese Eigenschaft (wie es vorgeschlagen wird) verfolgt, ob dieses MyObject gelöscht wird oder nicht, und daher, wenn sein Hintergrund rot sein muss.DataGridRow Hintergrund ändert sich bei der Auswahl

<Style.Triggers> 
     <DataTrigger Binding="{Binding IsDeleted}" Value="True"> 
      <Setter Property="Background" Value="red"/> 
     </DataTrigger> 
</Style.Triggers> 

Allerdings, wenn ich eine Zeile auswählen, der ‚Hintergrund‘ wird blau gelöscht wird, ändern (natürlich, weil es ausgewählt ist), die es etwas schwer macht gelöscht MyObjects zu identifizieren. Ich habe einige Vorschläge mit und so gelesen, aber diese schienen nicht für mich zu arbeiten.

ich wahrscheinlich bin mit Blick auf etwas offensichtlich, aber bitte beachten Sie das Datagrid dynamisch generiert, so die Aussagen sein müssen etwas dynamisch zu

Antwort

0

Vielleicht versuchen Color mit:

<Style x:Key="CustomDataGridRowStyle" TargetType="{x:Type DataGridRow}"> 
    <Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/> 
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridRow}"> 
       <Border x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True" Background="White"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal"/> 
          <VisualState x:Name="Normal_Selected"> 
           <Storyboard> 
            <ColorAnimation Storyboard.TargetName="DGR_Border" 
                Storyboard.TargetProperty="Background.Color" 
                Duration="0:0:0.5" 
                To="Transparent" /> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <ColorAnimation Storyboard.TargetName="DGR_Border" 
                Storyboard.TargetProperty="Background.Color" 
                Duration="0:0:0.5" 
                To="LightGray" /> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <DataGridCellsPresenter ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Wenn 'Normal_Ausgewählt' es mit der gewünschten Farbe färbt.

+0

Einfügen dieser in meine XAML-Datei hat nur das Programm zum Absturz gebracht. Ich kann ehrlich gesagt auch nicht genau sagen, was hier vor sich geht, also hätte ich keine Ahnung, wie ich es beheben könnte. – Ciphra

+0

Entfernen x: Key = "CustomDataGridRowStyle", sollte es sein – Rom

Verwandte Themen