Xamarin RelayCommand 不起作用
Xamarin RelayCommand doesn't work
我有一个使用 MVVM Light nuget 的 RelayCommand
的简单代码,但无法正常工作,只想按下一个按钮并显示一条消息,
我的xaml代码:
<StackLayout
Padding="8">
<Button
Command="{Binding ConvertCommand}"
Text="Hello">
</Button>
</StackLayout>
我的视图模型:
public class MainViewModel
{
public ICommand ConvertCommand { get { return new RelayCommand(ConvertMoney); } }
public async void ConvertMoney()
{
await App.Current.MainPage.DisplayAlert("hello", "hello", "acept");
return;
}
}
我认为您没有将 Page
或 StackLayout
的 BindingContext
设置为 ViewModel
。
例如
<ContentPage.BindingContext>
<viewModels:MainViewModel/>
</ContentPage.BindingContext>
或
<StackLayout.BindingContext>
<viewModels:MainViewModel/>
</StackLayout.BindingContext>
顺便说一下,您不需要将 MvvmLight
添加到您的 Xamarin.Forms
项目中,因为 Xamarin.Forms
有自己的 ICommand
实现。您可以简单地使用 Command
.
我有一个使用 MVVM Light nuget 的 RelayCommand
的简单代码,但无法正常工作,只想按下一个按钮并显示一条消息,
我的xaml代码:
<StackLayout
Padding="8">
<Button
Command="{Binding ConvertCommand}"
Text="Hello">
</Button>
</StackLayout>
我的视图模型:
public class MainViewModel
{
public ICommand ConvertCommand { get { return new RelayCommand(ConvertMoney); } }
public async void ConvertMoney()
{
await App.Current.MainPage.DisplayAlert("hello", "hello", "acept");
return;
}
}
我认为您没有将 Page
或 StackLayout
的 BindingContext
设置为 ViewModel
。
例如
<ContentPage.BindingContext>
<viewModels:MainViewModel/>
</ContentPage.BindingContext>
或
<StackLayout.BindingContext>
<viewModels:MainViewModel/>
</StackLayout.BindingContext>
顺便说一下,您不需要将 MvvmLight
添加到您的 Xamarin.Forms
项目中,因为 Xamarin.Forms
有自己的 ICommand
实现。您可以简单地使用 Command
.