除了相关信息之外,我几乎删除了所有内容。 BaseViewModel继承自ObservableObject。 我从传统的 WPF MVVM 方法开始,但无法再使 ICommands 工作。尽管它在 Maui Blazor 混合应用程序中似乎运行良好,但这只是一个 Maui 应用程序。据我发现,RelayCommand 是最新毛伊岛的正确方法,但无论我尝试什么,我的按钮命令都不起作用。 有什么建议吗?
公共分部类 SignInViewModel : BaseViewModel { 公共 RelayCommand UserLoginCommand { 获取;放; }
public SignInViewModel()
{
UserLoginCommand = new RelayCommand(UserLogin);
}
async void UserLogin()
{
...
}
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:NMMaui"
x:Class="NMMaui.Views.SignInPage"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
xmlns:vm="clr-namespace:NMMaui.ViewModels"
Title="Sign In"
HeightRequest="600"
Background="Silver">
<ContentPage.BindingContext>
<vm:SignInViewModel/>
</ContentPage.BindingContext>
<VerticalStackLayout>
<Grid RowDefinitions="Auto,*">
<Button
Grid.Row="10"
Text="Sign In"
FontAttributes="Bold"
TextColor="White"
Margin="0,20"
HeightRequest="50"
CornerRadius="10"
HorizontalOptions="Center"
Command="{Binding UserLoginCommand}"
BackgroundColor="#508390"></Button>
</Grid>
</VerticalStackLayout>
</ContentPage>
[RelayCommand]
public async Task UserLoginAsync()
{
...
}