当列表失去焦点时,WPF SelectedItem颜色消失

时间:2011-07-08 12:21:36

标签: c# wpf wpf-controls

我有一个WPF Window,它基本上有一个显示项目列表的ListBox

然后我ListView基本上显示SelectedItemListBox的详细信息。

问题是,当焦点不在ListBox上时,突出显示颜色消失,我看不到再选择哪个主项目。

你知道我怎么解决这个问题吗? (即确保项目保持突出显示)

4 个答案:

答案 0 :(得分:7)

最快的方法是使用ListBoxItem上的样式覆盖默认的系统颜色:

<Style TargetType="ListBoxItem">
   <Style.Resources>
      <!--SelectedItem with focus-->
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
         Color="LightBlue" Opacity=".4"/>
      <!--SelectedItem without focus-->
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
         Color="LightBlue" Opacity=".4"/>
   </Style.Resources>
</Style>

这是为列表项定义ItemTemplate稍微复杂(但更容易控制)的方法的快捷方式。网上有很多这样的例子,所以我不会把它放在这里。

答案 1 :(得分:2)

答案 2 :(得分:0)

<Style>
   <Style.Triggers>
      <DataTrigger Binding="{Binding RelativeSource=
                       {RelativeSource Mode=FindAncestor,
                        AncestorType={x:Type ListBoxItem}},
                        Path=IsSelected}" 
      Value="True">
         <Setter Property="Panel.Background" Value="Red" />
      </DataTrigger>
   </Style.Triggers>
</Style>

答案 3 :(得分:0)

使用数据绑定也可以解决此问题。 如果ListView / ListBox SelectedItem绑定到实现INotifyPropertyChanged的ViewModel中的属性,并且绑定模式为&#34; TwoWay&#34;,那么当ListView / ListBox再次获得焦点时,数据绑定将选择自动执行以前选择的项目。