2016-11-19 101 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依賴項屬性綁定到它。這個命令在底層實現的方式與這個觀點完全無關。