首页 > 解决方案 > 使用自定义渲染器在 xamarin 表单中可见或启用时自动聚焦条目

问题描述

我有一个页面,在其中显示有页脚的列表视图中的项目列表。列表视图的页脚仅在特定条件下可见。这是具有条目的列表视图页脚。

<listview:SfListView.FooterTemplate>
    <DataTemplate>
        <Grid Padding="15,5,10,10" IsVisible="{Binding NewListEntryVisible}">
            <Grid.RowDefinitions>
                <RowDefinition Height="50"/>
            </Grid.RowDefinitions>    
            <local:AutoFocusEntry ReturnType="Done" IsVisible="{Binding NewListEntryVisible}" Grid.Row="0" IsEnabled="{Binding FocusEntry}" Text="{Binding cartName}" x:Name="NewListEntry" Placeholder="Enter list name">
                <local:AutoFocusEntry.Behaviors>
                    <behaviors:EventToCommandBehavior                    
                        EventName="Completed"
                        Command="{Binding NewListCommand}" />
                </local:AutoFocusEntry.Behaviors>
            </local:AutoFocusEntry>    
        </Grid>    
    </DataTemplate>    
</listview:SfListView.FooterTemplate>

一旦页脚可见(正如我之前所说,它在某些条件下可见),我希望页脚中的条目自动获得焦点。如何使用 Entry Custom Renderer 来实现这一点。

提前致谢。

标签: xamarinxamarin.formscustom-renderer

解决方案


您想在显示或隐藏页脚的 ViewModel 字段中侦听属性更改事件。

为您的条目命名:

 <local:AutoFocusEntry x:Name="yourEntry"

在您的 page.xaml.cs 中侦听您想要的属性更改事件,以便为条目调用 Focus 事件:

yourViewModel.PropertyChanged += (sender, args) => {
    if (args.PropertyName.Equals("YourPropertyIsVisible"))
       yourEntry.Focus();

};

推荐阅读