当前位置: 首页 > 知识库问答 >
问题:

如何在ListView项的文本框中设置焦点?

师向文
2023-03-14

在UWP应用程序(Windows10)上,我在ListView中显示了一个记录列表。

    <DataTemplate x:Key="templateList">
        <StackPanel>
...
            <StackPanel Visibility="{Binding IsSelected}">
                <TextBox x:Name="textBox"
                         Text="{Binding Title, Mode=TwoWay}"/>
...
            </StackPanel>
        </StackPanel>
    </DataTemplate>
...
<ListView x:Name="listView" 
          ItemsSource="{Binding mylist}" 
          ItemTemplate="{StaticResource templateList}"/>

共有1个答案

丁灿
2023-03-14

对于这种情况,我建议使用Behaviors。正如我注意到的,对于isselect属性,您使用visibility类型。这意味着我们可以使用DatatriggerBehavior并创建实现IActionSetupFocusAction

public class SetupFocusAction : DependencyObject, IAction
{
    public Control TargetObject
    {
        get { return (Control)GetValue(TargetObjectProperty); }
        set { SetValue(TargetObjectProperty, value); }
    }

    public static readonly DependencyProperty TargetObjectProperty =
        DependencyProperty.Register("TargetObject", typeof(Control), typeof(SetupFocusAction), new PropertyMetadata(0));

    public object Execute(object sender, object parameter)
    {
        return TargetObject?.Focus(FocusState.Programmatic);
    }
}

之后,我们可以在XAML中使用此操作:

xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"

...

<StackPanel Visibility="{Binding IsSelected}"
            Grid.Row="1">
    <TextBox x:Name="textBox"
                Text="{Binding Title, Mode=TwoWay}">
        <i:Interaction.Behaviors>
            <core:DataTriggerBehavior Binding="{Binding IsSelected}"
                                        ComparisonCondition="Equal"
                                        Value="Visible">
                <local:SetupFocusAction TargetObject="{Binding ElementName=textBox}"/>
            </core:DataTriggerBehavior>
        </i:Interaction.Behaviors>
    </TextBox>
</StackPanel>
 类似资料:
  • 如何设置组件的焦点? 我已经尝试了上述代码,但不起作用:(

  • 我试图通过编程将焦点设置在(激活)材质ui中菜单组件内的一个菜单项上。我可以通过切换到它来手动完成,但我需要通过编程来响应按键关闭事件。

  • 问题内容: 网页加载后如何自动将焦点设置到文本框? 是否有HTML标记可以执行此操作,还是必须通过Javascript完成? 问题答案: 如果您使用的是jquery: 或原型: 或纯JavaScript: 尽管请记住,这将替换其他加载处理程序,所以请在Google中查找addLoadEvent()以获取添加加载处理程序而不是替换的安全方法。

  • 如何在Elm中设置Html元素的焦点?我试图在元素上设置自动聚焦属性,它只在页面加载上设置焦点。

  • 问题内容: Hai Guys,我想将光标设置在文本框上长度为14的位置,该位置将没有值。.我知道最初的光标将是0,但我希望它是14 问题答案: IE在设置光标位置时使用的方法与Firefox,Opera和Chrome不同。最好创建一个辅助函数,它将为您完成。我将其用于自己的需求。 最后一件事是从onfocus处理程序中调用它。 祝好运

  • 问题内容: 我让我的游戏在没有鼠标的情况下运行,因此不能使用指针。当玩家输球时将显示高分菜单。 这是我的代码 我努力了 但仍然没有专注于我的。 如何聚焦呢? 问题答案: 如果希望在GUI显示时集中精力,可以使用以下方法: 哪里会是你和你的。