Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
当焦点移出WPF列表框时,所选项目将失去样式_Wpf_Listbox_Styles - Fatal编程技术网

当焦点移出WPF列表框时,所选项目将失去样式

当焦点移出WPF列表框时,所选项目将失去样式,wpf,listbox,styles,Wpf,Listbox,Styles,我有什么 我有一个用XML文件中的项目填充的列表框。在ItemContainerStyle中为IsSelected提供了样式属性的DynamicSource和写入触发器 我想做什么 即使在焦点移出列表框后,我仍希望所选项目保持高亮显示 我面临什么问题 当我选择一个项目时,IsSelected触发器中指定的样式起作用。但是,当我将焦点移出列表框时,按tab键或单击其他控件,所选项目将失去其样式。是否有任何方法可以保留所选项目的样式 提前谢谢 如果只设置背景色,请尝试替换列表框的ControlBru

我有什么

我有一个用XML文件中的项目填充的列表框。在ItemContainerStyle中为IsSelected提供了样式属性的DynamicSource和写入触发器

我想做什么

即使在焦点移出列表框后,我仍希望所选项目保持高亮显示

我面临什么问题

当我选择一个项目时,IsSelected触发器中指定的样式起作用。但是,当我将焦点移出列表框时,按tab键或单击其他控件,所选项目将失去其样式。是否有任何方法可以保留所选项目的样式


提前谢谢

如果只设置背景色,请尝试替换列表框的ControlBrush,如所示。

在某些情况下会解决问题,但并不理想,因为当控件被禁用/只读时,它会中断,并且还会覆盖颜色方案,而不是利用它们。我的建议是在列表框标记中添加以下内容:

<ListBox....>
    <ListBox.Resources>
            <Style TargetType="ListBoxItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <Border Name="Border" Padding="2" SnapsToDevicePixels="true">
                                <ContentPresenter />
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="true">
                                    <Setter TargetName="Border" Property="Background"
                                            Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
        </Style>
    </ListBox.Resources>
</ListBox>
无论控件状态如何,只要选中列表框项,都会在列表框项上设置高亮背景色


我的答案基于对这些答案已经给出的答案的帮助,以及以下博客:

Oops!!这是错误的。很抱歉嗨,我面临着同样的问题,并尝试了发布的解决方案,但我无法解决问题。你能编辑你的帖子,让它包含解决方案吗?thanks@jpsstavares尝试第二种解决方案——更流行但尚未被接受的解决方案——它可以工作,并且不会破坏其他WPF UI元素。让我试试看。谢谢这是一个坏主意-对于关闭视觉主题的用户来说,这将搞乱很多事情-滚动条和按钮将更改为当前的突出显示颜色默认为蓝色-因此您的内部按钮和ListView滚动条将变为蓝色,非常糟糕!。