【问题标题】:Create bindable event handler in custom view cell在自定义视图单元中创建可绑定事件处理程序
【发布时间】:2019-02-07 14:50:36
【问题描述】:

按照 Microsoft 文章 Customizing View Cell,我为 UWP 的列表视图中使用的视图单元创建了本机 ViewCellRenderer。 本文解释了如何为可以使用本机控件显示的视图单元格创建可绑定属性。我想要的是能够创建一个可绑定的事件处理程序,以便我可以将此事件与本机 UWP 代码绑定,例如 Textblock 的 Tapped 事件。

示例- 在 Textblock 'Name' 的点击事件上,我想导航到另一个页面。导航逻辑写在我使用带有自定义视图单元的列表视图的页面的视图模型中。如何在自定义视图单元格中创建可绑定事件处理程序,以便将其与本机代码的 Tapped 事件绑定。

【问题讨论】:

  • 请展示并包含您正在处理的内容。

标签: listview xamarin.forms xamarin.uwp


【解决方案1】:

我在 Xamarin 中找到了 similar case。我们的团队成员回复了,根据您的要求,关键是使用XamlBehaviors将TextBlock的Tapped事件与自定义视图单元中定义的命令绑定。

Xaml

<Application.Resources>
    <ResourceDictionary>
        <DataTemplate x:Key="ListViewItemTemplate">
            <Grid>                
                <TextBlock Text="{Binding TextName}" >
                <interactivity:Interaction.Behaviors>
                    <core:EventTriggerBehavior EventName="Tapped">
                        <core:InvokeCommandAction  Command="{Binding TappedCommand}"/>
                    </core:EventTriggerBehavior>        
                </interactivity:Interaction.Behaviors>
                </TextBlock>
            </Grid>
        </DataTemplate>
    </ResourceDictionary>
</Application.Resources>

然后您可以在TappedCommand 方法中调用导航操作。

【讨论】:

  • 非常感谢,这正是我想要的。还有一个问题是如何将完整模型作为参数传递给上述示例中的命令,因为 CommandParameter="{Binding .}" 在这种情况下似乎不起作用。
  • 命令参数可以参考this回复。
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多