【发布时间】:2011-03-25 03:34:13
【问题描述】:
我在一个网格中有一个带有 3 个文本框的窗口 - 这是我的视图 - 我有保存按钮,用于将一个新用户添加到我的用户列表中,其中包含来自文本框的数据。 我想在我的视图模型类上使用中继命令来执行此操作,但我对如何进行绑定感到很困惑。我希望它足够清楚。任何想法或示例都会有所帮助。 提前致谢。
【问题讨论】:
我在一个网格中有一个带有 3 个文本框的窗口 - 这是我的视图 - 我有保存按钮,用于将一个新用户添加到我的用户列表中,其中包含来自文本框的数据。 我想在我的视图模型类上使用中继命令来执行此操作,但我对如何进行绑定感到很困惑。我希望它足够清楚。任何想法或示例都会有所帮助。 提前致谢。
【问题讨论】:
你应该有一个类似于下面的 ViewModel:
class UserViewModel
{
public String Name { get; set; }
public String Password { get; set; }
public String Email { get; set; }
public RelayCommand AddUserCommand { get; set; }
public UserViewModel()
{
AddUserCommand = new RelayCommand(AddUser);
}
void AddUser(object parameter)
{
// Code to add user here.
}
}
你可以像下面这样使用它:
<StackPanel>
<TextBox Text="{Binding Name}"></TextBox>
<TextBox Text="{Binding Password}"></TextBox>
<TextBox Text="{Binding Email}"></TextBox>
<Button Command="{Binding AddUserCommand}">Add</Button>
</StackPanel>
要完成这项工作,请将以下代码放入您的 UserControl/Control/Window 的构造函数中:
DataContext = new UserViewModel();
【讨论】:
我假设您阅读了 Josh Smith 的文章:WPF Apps With The Model-View-ViewModel Design Pattern。如果没有,请先阅读,然后下载代码,因为示例与您的问题非常相似。
【讨论】:
您是否创建了 ViewModel 的实例并将该实例放入视图或堆栈面板的 DataContext 中?
示例:
用户视图模型视图模型 = 新用户视图模型(); 用户窗口视图 = 新用户窗口(); view.DataContext = viewModel; 视图.显示();有几种耦合视图和视图模型的选项:
我更喜欢第一个选项,因为您可以在运行时随意组合视图和视图模型。
希望这是一个有用的答案。
【讨论】: