0

我有一个使用 ItemsSource 绑定到 ViewModel 实例列表的 Pivot 控件。我分配了一个自定义 ItemTemplateSelector 来映射 ViewModel 类型和 DataTemplate 定义。这一切都很好,并且基于关联的 DataTemplate 为每个 ViewModel 创建了正确的显示。像这样的东西...

<Pivot ItemsSource="{x:Bind ViewModels}"
       ItemTemplateSelector="{StaticResource ViewModelSelector}"
       SelectedItem="{x:Bind SelectedViewModel, Mode=TwoWay}"/>

问题是我想在第一次显示该页面时自动将焦点设置到每个页面中的控件。它们通常是数据输入表单,因此用户当前必须选择第一个控件才能开始输入数据。如果首先自动显示页面然后将焦点设置到该页面上的控件会更好。

有任何想法吗?

4

1 回答 1

0

You could bind a method to the TextBox when it's loaded.

For example:

<Pivot.ItemTemplate>
            <DataTemplate x:DataType="local:Test">
                <TextBox Text="{x:Bind Content}" Height="50" Loaded="{x:Bind TextBox_Loaded}">
                </TextBox>
            </DataTemplate>
        </Pivot.ItemTemplate>
public void TextBox_Loaded(object sender, RoutedEventArgs e)
    {
        TextBox textBox = sender as TextBox;
        if (textBox != null)
        {
            textBox.Focus(FocusState.Programmatic);
        }
    }
于 2018-05-21T09:28:35.667 回答