如何始终将焦点设置为按钮甚至单击其他文本框或其他控件?

时间:2016-05-06 07:11:12

标签: c# wpf xaml

我需要像excel查找和替换对话框中的行为,这就是我这样问的原因。在此图像中,您可以看到FindNext始终是专注的

FindNext is always focused

我可以将焦点设置为单个元素,即Textbox或Button。但我的要求始终是我需要将焦点设置为Button,即使我点击窗口中的其他一些控件。

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说,只需为您的按钮设置IsDefault="True"即可在您发布的图片中获得所需的结果。

e.g。

<Button Content="Button" IsDefault="True" />

结果:

即使用户输入文本框,您也可以看到按钮突出显示。

enter image description here

答案 1 :(得分:0)

不确定为什么要这样做。但是您始终可以在窗口上设置PreviewMouseLeftButtonDown,并检查e.OriginalSource属性以查看它是否是您想要关注的控件。如果您不想关注,只需将e.Handled设置为true

但是,严肃地说,为什么要这样做仍然很奇怪。

因编辑问题而编辑

&#34;查找下一个&#34;按钮只在视觉上看起来集中仍然关注搜索TextBox或替换TextBox。当您点击&#34;输入&#34;时,TextBox处理KeyEvent,并执行与&#34;查找下一个&#34;相同的Command。按钮。

如果你想做类似的事情,你可能会考虑这个:

  • 在某处添加属性(可能是bool ShouldButtonLookFocused
  • 在绑定到此ShouldButtonLookFocused属性的按钮中设置数据触发器,将触发器值设置为true(例如<DataTrigger Binding="{Binding Path=ShouldButtonLookFocused}" Value="True">
  • 将数据触发器的设置器设置为您想要指示的任何视觉更改。
  • 然后添加其他TextBox控件的绑定,这些控件在聚焦时,您希望按钮能够显示焦点&#34;。绑定应该是此ShouldButtonLookFocused属性,并且很可能您需要使用Converter

示例:

<Style TargetType="Button">
  <Style.Triggers>
    <DataTrigger Binding="{Binding Path=ShouldButtonLookFocused}" Value="True">
      <!-- Whatever visual thing you can think of -->
      <Setter Property="Border" Value="Red" />
    </DataTrigger>  
  </Style.Triggers>
</Style>


public static readonly DependencyProperty ShouldButtonLookFocusedProperty =
    DependencyProperty.Register("ShouldButtonLookFocused",
    typeof(bool),
    typeof(WhicheverClassThisIsIn));

public bool ShouldButtonLookFocused
{
    get
    {
        return (bool)GetValue(ShouldButtonLookFocusedProperty);
    }
    set
    {
        SetValue(ShouldButtonLookFocusedProperty, value);
    }
}


<TextBox Name="SearchBox"
    IsFocused="{Binding Path=ShouldButtonLookFocused,
    Converter={StaticResource MyConverter}"
/>

我没有测试过这个,也许你可以尝试一下然后告诉我它是怎么回事。