Mvvm Xamarin表单:如何将命令从ViewModel绑定到XAML
我正在尝试将命令绑定到Xaml中的按钮。我可以绑定ViewModel中声明的属性并查看它以更改按钮背景的颜色。使用相同的方法将命令添加到按钮,当我单击按钮时,按钮没有触发命令 我的ViewModel命令属性Mvvm Xamarin表单:如何将命令从ViewModel绑定到XAML,mvvm,xamarin,command,viewmodel,Mvvm,Xamarin,Command,Viewmodel,我正在尝试将命令绑定到Xaml中的按钮。我可以绑定ViewModel中声明的属性并查看它以更改按钮背景的颜色。使用相同的方法将命令添加到按钮,当我单击按钮时,按钮没有触发命令 我的ViewModel命令属性 public Color Color { get { return Color.Teal; } } public ICommand OpenFileCommand = new Comma
public Color Color
{
get
{
return Color.Teal;
}
}
public ICommand OpenFileCommand = new Command((object obj) => {
Task.Run(() =>
{
var pickFileTask = CrossFilePicker.Current.PickFile();
var data = pickFileTask.Result;
//OpenDocument(data.FileName, data.DataArray);
});
});
Xaml部分:
<!-- Left Panel -->
<StackLayout x:Name="leftStack" Orientation="Vertical" BackgroundColor="Transparent">
<Button
x:Name="btnOpen"
BackgroundColor="{Binding Color}"
Command="{Binding OpenFileCommand}"
Image="addfile"
HorizontalOptions="CenterAndExpand"
VerticalOptions="CenterAndExpand"
WidthRequest="40"
HeightRequest="40">
</Button>
我通过更改视图模型类(我在其中定义了Command属性)使其正常工作
public ICommand OpenFileCommand
{
get
{
return new Command((object obj) =>
{
Task.Run(() =>
{
var pickFileTask = CrossFilePicker.Current.PickFile();
var data = pickFileTask.Result;
OpenDocument(data.FileName, data.DataArray);
});
});
}
}
对我有效的方法是将ICommand定义为具有如下getter的属性:
public ICommand OpenFileCommand { get { return new Command(() => TestMethod()); } }
public void TestMethod() {
//Do stuff here
}
我不知道哪部分不工作?是XAML还是C#很抱歉,我现在让它工作了…在我定义命令属性的视图模型中。我已更改为getter并返回一个命令对象。
public ICommand OpenFileCommand { get { return new Command(() => TestMethod()); } }
public void TestMethod() {
//Do stuff here
}