2016-08-02 7 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), и вы попытались проверить его в методе выше, это будет null, потому что оно еще не установлено. – onemorecupofcoffee

+1

Вот почему вам нужно использовать args.AddedItems - это элементы, которые будут добавлены в выборку после того, как обработчик события (SelectionChanged) запущен – onemorecupofcoffee

Смежные вопросы