【问题标题】:How to make two controls apear as focused?如何使两个控件显示为焦点?
【发布时间】:2012-01-10 16:02:22
【问题描述】:

我正在尝试编写一个自定义控件,它的模板中有一个 TextBox 和一个 ListBox。 但是我发现当我在 TextBox 中输入文本时(因此 TextBox 有焦点),ListBox 显示为没有焦点。这使我的控件看起来像两个不同的控件。

我在 MSDN 上读到 WPF 中有一个名为 FocusScope 的东西,但我没有成功。

所以我的问题是如何让 ListBox 和 TextBox 控件在其中一个具有键盘焦点时显示为焦点?

【问题讨论】:

    标签: wpf wpf-controls controltemplate


    【解决方案1】:

    IsFocusScope 属性设置为周围的Panel(这里:StackPanel): ListBox 和 TextBox 在被聚焦方面被一起处理

      <StackPanel FocusManager.IsFocusScope="True">
        <ListBox >
          <ListBoxItem>Item1</ListBoxItem>
          <ListBoxItem>Item2</ListBoxItem>
        </ListBox>
    
        <TextBox>Enter Text here...</TextBox>
      </StackPanel>
    

    【讨论】:

    • 焦点范围的工作方式不同。它定义了一个元素具有逻辑焦点的范围,当它是活动范围时,也是键盘焦点。请参阅msdn.microsoft.com/en-us/library/ms754010.aspx#focus 了解更多详情。
    • 我没有提到 ListBox 在 Popup 但 TextBox 不在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2022-07-19
    • 2015-04-26
    • 2016-07-09
    • 1970-01-01
    相关资源
    最近更新 更多