2016-09-29 17 views
0

慎重に周りを見回した後、選択時に行の背景を変更する方法がわからない人を見つけていますが、色が変わるのを防ぐ方法を見つけようとしています選択された。
私は、MyObjectsを保持する動的に生成された列を持つDataGridを持っています。これは、MyObjectsを保持するobjectというプロパティとIsDeletedの列を持ちます。このプロパティは(示唆しているように)このMyObjectが削除されているかどうかを追跡し、バックグラウンドが赤である必要があるかどうかを追跡します。 Iが削除された行を選択したとき(それが選択されているので、明らかに)DataGridRowの背景が選択時に変更される

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

しかし、「バックグラウンド」は、それがやや硬い削除MyObjectsを識別することができた青色に変わります。私はProperty="OverrideDefault.SelectionBackground" Value="Red"といくつかの提案を読んだが、それらは私にとってはうまくいかないようだ。

私はおそらく何かを明らかに見下ろすが、データグリッドが動的に生成されますのでご注意ください、その文がややダイナミックすぎ

答えて

0

する必要がたぶんColorAnimationを使用してみてくださいよ:

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

'Normal_Selected'の色であなたが望む色で色付けします。

+0

これを私のxamlファイルに貼り付けるだけで、プログラムがクラッシュしました。私は正直言って、実際に何が起こっているのかは分からないので、それを修正する手掛かりはありません。 – Ciphra

+0

xを削除:Key = "CustomDataGridRowStyle"、それはすべきです – Rom

関連する問題