2010-08-04 51 views
1

我有一个窗口,其中有3个文本框在网格中 - 这是我的视图 - 我有保存按钮来添加一个新用户到我的用户列表与文本框中的数据。 我想在我的viewmodel类上使用中继命令来做到这一点,但我对如何制作绑定感到困惑。我希望这很清楚。任何想法或例子都会有所帮助。 在此先感谢。绑定一个保存命令WPF

回答

2

你应该有一个视图模型类似如下:

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> 

为了使这项工作,把按照你的用户控件代码/控制/窗户的构造函数:

DataContext = new UserViewModel(); 
+0

这些代码是否足以提供视图和视图模型之间的关系?它仍然不起作用... – cemregoksu 2010-08-04 10:10:08

+0

您必须创建ViewModel的对象并将其分配给窗口的DataContext – Zied 2010-08-04 11:37:43

+0

感谢Zied为此添加了这一点。我已经更新了代码。 – decyclone 2010-08-04 14:18:13

0

我推测你读了Josh Smith的文章: WPF Apps With The Model-View-ViewModel Design Pattern。如果你没有,那么先阅读它,然后下载代码,因为示例与你的问题非常相似。

+0

是的,我读了它,它让我感到困惑,比帮助我... – cemregoksu 2010-08-04 10:22:15

+0

我明白你:)。到过那里。三读和学习代码后,我得到了部分内容。需要时间来捕捉正在发生的事情。至少我需要。 – zendar 2010-08-04 10:57:39

0

您是否创建了ViewModel的实例并将此实例放入您的视图或stackpanel的DataContext中?

例如:

 
UserViewModel viewModel = new UserViewModel(); 
UserWindow view = new UserWindow(); 
view.DataContext = viewModel; 
view.Show(); 

上有视图和视图模型耦合的几个选项:

  • 创建视图和视图模型和视图模型设置为DataContext属性(代码以上)
  • 在视图的构造函数中创建ViewModel并使用它填充DataContext属性
  • 在typ视图中创建资源然后在XAML中填充DataContext属性

我更喜欢第一个选项,因为您可以在运行时随心所欲地组合视图和视图模型。

希望这是一个有用的答案。