C# 当列表失去焦点时,WPF SelectedItem color将消失
我有一个WPFC# 当列表失去焦点时,WPF SelectedItem color将消失,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我有一个WPF窗口,它基本上有一个列表框,显示项目列表 然后我有一个列表视图,基本上在列表框中显示SelectedItem的详细信息 问题是,当焦点不再集中在列表框上时,突出显示的颜色消失,我看不到选择了哪个主项 你知道我怎么解决这个问题吗?(即,确保项目保持高亮显示)最快的方法是使用ListBoxItem上的样式覆盖默认系统颜色: <Style TargetType="ListBoxItem"> <Style.Resources> <!--Sel
窗口
,它基本上有一个列表框
,显示项目列表
然后我有一个列表视图
,基本上在列表框
中显示SelectedItem
的详细信息
问题是,当焦点不再集中在列表框上时,突出显示的颜色消失,我看不到选择了哪个主项
你知道我怎么解决这个问题吗?(即,确保项目保持高亮显示)最快的方法是使用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的稍微复杂(但更容易控制)方法的一种快捷方式。网上有很多这样的例子,所以我不在此赘述。
<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>
这个问题也可以通过数据绑定来解决。
如果ListView/ListBox SelectedItem绑定到实现的ViewModel中的某个属性,并且绑定模式为“双向”,则当ListView/ListBox再次获得焦点时,数据绑定将自动选择先前选择的项。两个答案都以相同的解决方案结束,但我选择了这个,因为答案包含在帖子中。对我来说,当程序启动时,列表框的第一项总是有颜色的。有什么方法可以防止这种情况发生吗?我想出来了-我将所选索引绑定到viewmodel中的一个变量,所以在VM构造函数中,我只是将该值设置为-1。