如何在 MAUI 中拥有一个命令(能够)视图或一个带有内容的按钮?
Posted
技术标签:
【中文标题】如何在 MAUI 中拥有一个命令(能够)视图或一个带有内容的按钮?【英文标题】:How to have a Command(able) view or a Button with content in MAUI? 【发布时间】:2022-01-22 05:33:12 【问题描述】:我需要一个可以绑定命令的复合可点击 MAUI 组件。
Button
s 不能包含内容,只能包含文本。
ContentView
s 没有命令,所以我尝试了这种方式
//
public partial class BtnView : BaseContentView<BtnVm>
public ICommand Command get; set;
public object CommandParameter get; set;
public BtnView() : base()
InitializeComponent();
public static BindableProperty CommandProperty get; set; = BindableProperty.Create(nameof(Command), typeof(Command), typeof(BtnView));
public static BindableProperty CommandParameterProperty get; set; = BindableProperty.Create(nameof(CommandParameter), typeof(object), typeof(BtnView));
这样,我希望 Command 属性是可绑定的,但是:
绑定命令时出现 XFC0009 错误没有通过点击触发它的机制。找不到“命令”的属性、BindableProperty 或事件,或者值和属性之间的类型不匹配。
我打算如何实现这种组件?
【问题讨论】:
【参考方案1】:像 Xamarin Forms 一样,Maui 可以attach a TapGestureRecognizer
到任何视觉元素。另见TapGestureRecognizer
doc。
将此添加到 xaml 中的 ContentView
:
<ContentView.GestureRecognizers>
<TapGestureRecognizer
NumberOfTapsRequired="1"
Tapped="OnTapped">
</TapGestureRecognizer>
</ContentView.GestureRecognizers>
将此添加到 xaml.cs 中的“代码隐藏”中:
protected void OnTapped(object sender, EventArgs args)
// Do something here.
【讨论】:
我需要从父组件引用一个命令,所以我将使用<TapGestureRecognizer Command="Binding SelectChild" CommandParameter="Binding Child"/>
以上是关于如何在 MAUI 中拥有一个命令(能够)视图或一个带有内容的按钮?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 .NET MAUI Preview 7 创建 DataGrid?