【问题标题】:Focus (the TextBox of) AutoCompleteBox in XAMLXAML 中的焦点(文本框)AutoCompleteBox
【发布时间】:2023-03-26 23:37:01
【问题描述】:

我在 C# WPF 项目中有一个 AutoCompleteBox。我想要的是在打开视图时让这个框自动聚焦。我知道代码中有一些解决方案,但我想直接在 XAML 中执行此操作(如果可能)。

到目前为止,我已经尝试了以下方法,但它似乎没有做任何事情:

<controls:AutoCompleteBox x:Name="Items" ... Text="{Binding Search, Mode=TwoWay}">
    <controls:AutoCompleteBox.TextBoxStyle>
        <Style TargetType="TextBox">
            <Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}" />
        </Style>
    </controls:AutoCompleteBox.TextBoxStyle>
</controls:AutoCompleteBox>

【问题讨论】:

  • 任何你可以用Behavior 或AttachedProperty 来完成的代码
  • 通过“wpf focus xaml”进行网络搜索会产生很多结果。
  • @Dennis 是的,适用于 TextBoxes,不适用于 AutoCompleteBox。我只能找到大约 4 个结果,它们都在代码中,在 XAML 中没有。

标签: c# wpf xaml focus autocompletebox


【解决方案1】:
<ContainerXYZ FocusManager.FocusedElement="{Binding ElementName=Items}">
    <controls:AutoCompleteBox x:Name="Items" ... Text="{Binding Search, Mode=TwoWay}">
</ContainerXYZ>

这样的事情应该可以解决问题

【讨论】:

  • 我试过你的代码(ContainerXYZ 是我的网格),但它也不起作用。 AutoCompleteBox 没有获得焦点。
  • 您是否尝试在窗口或用户控件定义等不同位置设置 FocusManager?也许显式使用RelativeSource Binding
  • 我也不确定在样式中设置焦点是否有效。并且您的 Targettype 在 Style 应该是 AutoCompleteBox 而不是 Textbox
  • 在用户控件中它也不起作用。关于您的第二条评论,如果我将 Style 中的 TargetType 更改为 AutoCompleteBox,则会出现“不支持 WPF”错误。
  • TargetType="{x:Type controls:AutoCompleteBox}" ?您应该考虑学习更多 WPF 基础知识
猜你喜欢
  • 2017-05-16
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多