gpt4 book ai didi

WPF 和 MVVM : Get values from textboxes and send it to ViewModel

转载 作者:行者123 更新时间:2023-12-04 05:52:42 25 4
gpt4 key购买 nike

当我按下按钮时,我试图获取两个 Texboxes 的值(我正在模拟登录窗口)。按钮中分配的命令正确触发,但我不知道如何获取文本框的值来执行“登录”。

这是我的 View 模型:

class LoginViewModel : BaseViewModel
{
public LoginViewModel()
{

}

private DelegateCommand loginCommand;
public ICommand LoginCommand
{
get
{
if (loginCommand == null)
loginCommand = new DelegateCommand(new Action(LoginExecuted),
new Func<bool>(LoginCanExecute));
return loginCommand;
}
}

public bool LoginCanExecute()
{
//Basic strings validation...
return true;
}
public void LoginExecuted()
{
//Do the validation with the Database.
System.Windows.MessageBox.Show("OK");
}
}

这是 View :
 <Grid DataContext="{StaticResource LoginViewModel}">

<TextBox x:Name="LoginTxtBox" HorizontalAlignment="Left" Height="23" Margin="34,62,0,0" Width="154" />
<PasswordBox x:Name="PasswordTxtBox" HorizontalAlignment="Left" Height="23" Margin="34,104,0,0" Width="154"/>
<Button x:Name="btnAccept"
HorizontalAlignment="Left"
Margin="34,153,0,0"
Width="108"
Content="{DynamicResource acceptBtn}" Height="31" BorderThickness="3"
Command="{Binding LoginCommand}"/>

如果有人可以提供帮助...我将不胜感激。

最佳答案

通常,您会绑定(bind) TextBox.Text属性到 ViewModel 上的属性。这样,值存储在 ViewModel 中,而不是 View 中,并且没有“获取”所需的值。

class LoginViewModel : BaseViewModel
{
//...
private string userName;
public string UserName
{
get { return this.userName; }
set
{
// Implement with property changed handling for INotifyPropertyChanged
if (!string.Equals(this.userName, value))
{
this.userName = value;
this.RaisePropertyChanged(); // Method to raise the PropertyChanged event in your BaseViewModel class...
}
}
}

// Same for Password...

然后,在您的 XAML 中,您将执行以下操作:
<TextBox Text="{Binding UserName}" HorizontalAlignment="Left" Height="23" Margin="34,62,0,0" Width="154" />
<PasswordBox Text="{Binding Password}" HorizontalAlignment="Left" Height="23" Margin="34,104,0,0" Width="154"/>

此时, LoginCommand可以直接使用本地属性。

关于WPF 和 MVVM : Get values from textboxes and send it to ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com