我想将
Xamarin.Forms.Button
传递到自己的Command
中作为CommandParameter
到我的ViewModel。我知道如何从代码后台实现这一点,例如...
XAML(省略大多数属性)
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"/>
XAML.cs
public partial class MyTestPage
{
public MyTestPage()
{
InitializeComponent();
myButton.CommandParameter = myButton;
}
}
视图模型
public class MyViewModel : ViewModelBase
{
public MyViewModel()
{
ButtonClickCommand = new Command(
(parameter) =>
{
var view = parameter as Xamarin.Forms.Button;
if (view != null)
{
// Do Stuff
}
});
}
public ICommand ButtonClickCommand { get; private set; }
}
...但是在XAML本身中声明CommandParameter
是否可能?换句话说,如何使用绑定语法将参数设置为按钮本身?
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"
CommandParameter="{[WHAT WOULD GO HERE]}"/>
< p>顺便说一句,我已经尝试过 CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
,但那样做不起作用。
谢谢,
ContentPage.DisplayActionSheet(...)
的实现 - 如果操作表不够用,您可以反向工程显示它的代码。而获取按钮引用仍需要从其中找到 UIButton 引用。使用自定义渲染器会更好。 - Sten Petrov