2017-04-15 17 views
-1

私はこのコードをしようとしている:ListViewItemの背景色を変更するには?

<Style TargetType="ListViewItem"> 
        <Setter Property="OverridesDefaultStyle" Value="True" /> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="ListViewItem"> 
           <ContentPresenter /> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Foreground" Value="Blue" /> 
          <Setter Property="Background" Value="Red" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 

私はテキストのみの色が変化しないことが判明。しかし、背景がまだ同じままが。

<Style TargetType="ListViewItem"> 
       <Setter Property="OverridesDefaultStyle" Value="True" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListViewItem"> 
          <ContentPresenter /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Background" Value="Red" /> 
      </Style> 
+0

私が思う私の答え(http://stackoverflow.com/questions/41317609/add-more-than-1-datagridcell-with-style-to-a-row-in-wpf- dgv-programatically/41318169#41318169)はあなたが探しているものです。 – CodingYoshi

+0

@コーディングYoshiご返信ありがとうございます。しかし、私はwpfに新しいので、私にそれをさらに説明してくださいできますか? – ntvy95

+0

あなたの状況(背景がListViewItemで変更されないように見える)を再現でき、ビジュアルツリーをすばやく見ていました。 ListViewItemは実際には赤の背景色を持っているため、他のオブジェクトでマスクする必要があります。ここで問題となるのは、既定のスタイルをオーバーライドし、テンプレートのプロパティで完全に再構築しないということです。このように、次のようになります: 'Style TargetType =" ListViewItem "> '赤い背景をきれいに作り出します。 – TiberiumFusion

答えて

0

最後に、私は回避する方法を考え出した:私は、私は他のトリガタイプに切り替えて、私は単にやるとき場合でも、この動作は変わりません見つけます。素晴らしいヒントのための@TiberiumFusionへの特別なおかげです。しかし、このソリューションは私が望むほどうまくありません。 [ここ]

<Style TargetType="ListViewItem"> 
       <Setter Property="OverridesDefaultStyle" Value="True" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListViewItem"> 
          <Border x:Name="border"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="Control.Foreground" TargetName="border" Value="Blue" /> 
            <Setter Property="Control.Background" TargetName="border" Value="Red" /> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style>