我想将自己的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;
}
}
ViewModel
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
吗?或者换句话说,将参数设置为按钮本身的绑定(bind)语法是什么?<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"
CommandParameter="{[WHAT WOULD GO HERE]}"/>
顺便说一句,我已经尝试过
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
,但是没有用。谢谢,
最佳答案
Xamarin.Forms
具有“引用”标记扩展,可以完成以下工作:
<Button x:Name="myButton"
Text="My Button"
Command="{Binding ButtonClickCommand}"
CommandParameter="{x:Reference myButton}"/>
虽然,这是我第一次看到这种需要,并且您可能可以更好地将Views与ViewModels分开,并通过使用更简洁的模式或不共享按钮命令来解决此问题。
关于c# - 如何在Xamarin.Forms页面中从XAML将Button作为CommandParameter传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25912091/