我有一个WPF Window
,它基本上有一个显示项目列表的ListBox
。
然后我ListView
基本上显示SelectedItem
中ListBox
的详细信息。
问题是,当焦点不在ListBox
上时,突出显示颜色消失,我看不到再选择哪个主项目。
你知道我怎么解决这个问题吗? (即确保项目保持突出显示)
答案 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再次获得焦点时,数据绑定将选择自动执行以前选择的项目。