2016-11-19 90 views
0

我是WPF和MVVM的新手,并且正在通过Microsoft's site上的示例,但是,我看不到绑定是如何完成的。在链接的例子,有这段代码:功能绑定规范

public partial class MainPage : UserControl 
{ 
    private PartInventoryViewModel viewModel; 

    public MainPage() 
    { 
     InitializeComponent(); 
     viewModel = new PartInventoryViewModel(); 
     this.DataContext = viewModel; 
    } 

    private void PartSearchButton_Click(object sender, RoutedEventArgs e) 
    { 
     viewModel.GetParts(); 
    } 
} 

显然:

它当用户点击PartSearchButton通知视图模型实例。

但是怎么样?上例中的PartSearchButton在上面的XAML中没有约束。这是一个规范,如果你命名你的函数YourButtonName_Clicked()它会触发点击按钮时?或者,如果您使用(object sender, RoutedEventArgs e)参数创建函数,它是否会成为侦听器?还是有一些本教程没有显示的XAML,绑定发生在哪里?

谢谢你的回答,对不起,如果这是一个新手。

回答

0

微软没有显示这里所需的全部代码。基本上这个代码所做的就是将DataContext设置为一个新实例化的ViewModel。该PartSearchButton_Click是一个简单的点击事件处理程序应该是这个样子在你的XAML文件:

<Button Click="PartSearchButton_Click">Search</Button> 

整个约束力的事情是在你的XAML文件中这两条线DataGrid的发生

ItemsSource="{Binding Parts}" 
SelectedItem="{Binding CurrentPart, Mode=TwoWay}" 

这是告诉DataGrid它应该在当前DataContext中寻找一个名为Parts的公共属性。您将DataContext设置为PartInventoryViewModel的新实例,因此需要在其中某处存在公共财产Parts。我想PartInventoryViewModel课程将在微软网站上进一步解释。

0

链接中的XAML片段实际上缺少该事件处理程序。

<source>_<event>指南是命名事件处理程序的约定,但绝不会将函数自动绑定到相应的事件;您必须以编程方式或在XAML中添加处理程序。这就是说,将应用程序逻辑与按钮关联通常是通过命令而不是事件处理程序在WPF中完成的。视图模型公开了ICommand类型的属性,并且该视图将Button(或其他控件)的Command依赖项属性绑定到它。这个命令在底层实现的方式与这个观点完全无关。