WPF - 防止ListView失去焦点

时间:2014-09-19 21:40:32

标签: c# .net wpf user-interface focus

当用户与Calendar控件交互时,我希望ListView中的所选项目保持专注。

目前,当用户点击列表中的某个项目时,它会突出显示。 List View focused

当他们点击日历焦点丢失时,我不想要。 List View Lost Focus

如何阻止我的日历从ListView中窃取焦点? 要么 如何阻止我的ListView放弃焦点?

2 个答案:

答案 0 :(得分:3)

当用户与日历交互时,您无法阻止日历获得焦点

但是当没有焦点时,您可以影响ListView所选项目的颜色 您需要设置未聚焦的ListView所选项目的颜色 这些设置为透明但只选择一种颜色

<Style x:Key="ListViewItemNoColor" TargetType="ListViewItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
        <!-- Background of selected item when focussed -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
        <!-- Background of selected item when not focussed -->
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
    </Style.Resources>
</Style> 

答案 1 :(得分:0)

你的两个要求不一致。

根据定义,当用户&#34;互动&#34;通过控制,他们给予控制焦点。你不能互动&#34;使用Calendar控件,而ListView控件具有焦点。

通过将Calendar设置为false(以及其他方式),您当然可以使IsEnabled无法对焦。你也可以在ListView上发布一个事件来窃取&#34;只要它丢失就会集中注意力,但你很难与其他控件进行交互,大多数交互都是不可能的。

您应该评估为什么它会失去焦点并解决该要求。