2016-08-02 116 views
0

當我在DataGrid中選擇一個項目時,看起來我無法更改選擇。我可以點擊另一行,但它不會做任何事情。我知道這一點,因爲當SelectionChanged行爲發生在這個充滿了客戶的數據網格時,我有一個彈出框顯示那裏的名字。名字總是一樣的。下面是C#代碼獲取DataGrid以更改所選項目

priavate void dataGridCustomers_SelectionChanged(object sender, SelectionChangedEventArgs) 
{ 
    Customer selectedCustomer = (Customer) dataGridCustomers.SelectedItem; 
    MessageBox.Show(selectedCustomer.FirstName); 
} 

我想它,這樣我每次選擇一行的時間,也就是所選擇的項目

回答

0

參考下面的定義,我認爲你正試圖引用所選實際上已經設置的項目。

https://msdn.microsoft.com/en-us/library/system.windows.controls.selectionchangedeventargs(v=vs.110).aspx

像這樣的東西應該做的伎倆:

private void dataGridCustomers_SelectionChanged(object sender, SelectionChangedEventArgs args) 
{ 
    if (args.AddedItems.Length > 0) 
    { 
     Customer selectedCustomer = (Customer) args.AddedItems[0]; 
     MessageBox.Show(selectedCustomer.FirstName); 
    } 
} 
+0

有時候它說,所選擇的項目是空的,爲什麼會是這樣? –

+1

SelectedItem是在網格上選擇的項目。在這個事件處理程序中,SelectedItem只在執行sectionChanged事件之後設置。因此,如果最初沒有SelectedItem(null),並且您試圖在上面的方法中檢查它,則它將爲空,因爲它尚未設置。 – onemorecupofcoffee

+1

這就是爲什麼您需要使用args.AddedItems - 這些是在事件處理程序(SelectionChanged)被觸發後將添加到選擇的項目 – onemorecupofcoffee