获得专注的容器控制"在WPF中

时间:2016-08-15 09:42:13

标签: c# wpf focus

我有一个复杂的应用程序,包含许多字段,标签空间很小,无法准确描述给定控件的输入内容。为了解决这个问题,我尝试使用每个控件的工具提示来描述元素。当这些工具提示妨碍并且一旦用户开始输入时就会消失,我专注于我的应用程序的一个区域来显示聚焦元素的工具提示。除了包含其他控件的更复杂控件(例如, DatePicker,因为焦点元素将是PARTextBox的{​​{1}}。以下是演示该问题的最小示例:

DatePicker

是否有一般方法可以解决这个聚焦问题,并显示这样一个&#34;复合材料的工具提示&#34;控制(因此对于所有这些控制,不仅<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel> <TextBox ToolTip="TextBox ToolTip" /> <DatePicker ToolTip="DatePicker ToolTip" /> <Label Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=(FocusManager.FocusedElement).ToolTip}" /> </StackPanel> </Window> )?

1 个答案:

答案 0 :(得分:0)

在我的头顶,我采取这种方法:

  1. 创建一个Attached Property,为控件提供描述性文字
  2. 让附加的属性类也绑定到您的VM属性以获取描述性文本
  3. 将描述性文本viewmodel属性绑定到标签/文本块
  4. 随后的属性会监听控件何时获得焦点并只更新相关的绑定。
  5. 所以在XAML中至少看起来像这样:

    <TextBox local:DescriptiveText="This textbox takes some input" local:DescriptiveTarget="{Binding DescriptiveText} />
    <Label Content="{Binding DescriptiveText} />