我需要c#的代码
时间: 2024-02-15 12:03:32 浏览: 75
C#代码
好的,以下是使用C#和MVVM模式实现登录页面跳转的示例代码:
LoginPage.xaml:
```xaml
<Page>
<StackPanel>
<TextBox Text="{Binding Username}" PlaceholderText="Username" Margin="0,10"/>
<PasswordBox Password="{Binding Password}" PlaceholderText="Password" Margin="0,10"/>
<Button Content="Log in" Command="{Binding LoginCommand}" Margin="0,10"/>
</StackPanel>
</Page>
```
LoginPage.xaml.cs:
```csharp
public partial class LoginPage : Page
{
private LoginViewModel _viewModel;
public LoginPage()
{
InitializeComponent();
_viewModel = new LoginViewModel();
DataContext = _viewModel;
_viewModel.LoggedIn += OnLoggedIn;
}
private void OnLoggedIn(object sender, EventArgs e)
{
// Navigate to the main page here
NavigationService.Navigate(new Uri("MainPage.xaml", UriKind.Relative));
}
}
```
LoginViewModel.cs:
```csharp
public class LoginViewModel : INotifyPropertyChanged
{
private string _username;
public string Username
{
get { return _username; }
set
{
_username = value;
OnPropertyChanged(nameof(Username));
}
}
private string _password;
public string Password
{
get { return _password; }
set
{
_password = value;
OnPropertyChanged(nameof(Password));
}
}
public ICommand LoginCommand { get; }
public event EventHandler LoggedIn;
public LoginViewModel()
{
LoginCommand = new RelayCommand(OnLogin);
}
private void OnLogin()
{
// Perform login logic here. If successful, raise the LoggedIn event.
if (Username == "admin" && Password == "admin")
{
LoggedIn?.Invoke(this, EventArgs.Empty);
}
else
{
Console.WriteLine("Login failed");
}
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
```
MainPage.xaml:
```xaml
<Page>
<TextBlock Text="Main Page"/>
</Page>
```
在该示例中,LoginPage.xaml 包含一个登录表单,用户可以输入用户名和密码。当用户单击“Log in”按钮时,会调用 LoginViewModel 中的 OnLogin 方法,该方法将用户名和密码传递给登录逻辑。如果登录成功,则 LoginViewModel 触发 LoggedIn 事件,该事件将在 LoginPage.xaml.cs 中接收并导航到名为“MainPage.xaml”的页面。
请注意,LoginViewModel 实现了 INotifyPropertyChanged 接口,以确保当 Username 和 Password 属性发生更改时,页面上的文本框会自动更新。
此外,LoginPage.xaml.cs 中使用了 RelayCommand 类来实现 LoginCommand。这是由于 WPF 和 UWP 中的 Button 类不支持 Command 属性,因此需要使用自定义的 RelayCommand 类来绑定命令。如果您使用的是 Xamarin.Forms,则可以直接使用 Button 类的 Command 属性。
阅读全文