Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当列表失去焦点时,WPF SelectedItem color将消失_C#_Wpf_Wpf Controls - Fatal编程技术网

C# 当列表失去焦点时,WPF SelectedItem color将消失

C# 当列表失去焦点时,WPF SelectedItem color将消失,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我有一个WPF窗口,它基本上有一个列表框,显示项目列表 然后我有一个列表视图,基本上在列表框中显示SelectedItem的详细信息 问题是,当焦点不再集中在列表框上时,突出显示的颜色消失,我看不到选择了哪个主项 你知道我怎么解决这个问题吗?(即,确保项目保持高亮显示)最快的方法是使用ListBoxItem上的样式覆盖默认系统颜色: <Style TargetType="ListBoxItem"> <Style.Resources> <!--Sel

我有一个WPF
窗口
,它基本上有一个
列表框
,显示项目列表

然后我有一个
列表视图
,基本上在
列表框
中显示
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。