2015-11-23 5 views
0

Я использую RadGridView, который имеет 11 строк и много столбцов, i показывает только 2 столбца, которые являются именем и типом. Я создаю для строк строки ContextMenu и открою новое окно, если я нажму. Скажем, у меня есть 3 разных значений в columnType которых являются А, В, С и у меня есть для ContextMenu как это событие нажмите:C# WPF - передать значение из события click в другой файл класса

public void GridContextMenu_ItemClick(object sender, Telerik.Windows.RadRoutedEventArgs e) 
{ 
    MenuItem item = (e.OriginalSource as RadMenuItem).DataContext as MenuItem; 
    typeValue = (GridView.SelectedItem).columnType; 
    switch (item.Text) 
    { 
     case "Edit]": 
      if (typeValue == "A") 
      { 
       selectedItem = GridView.SelectedItem; 
       editA.Show(); 
       this.Close(); 
       break; 
      } 
      else if (typeValue == "B") 
      { 
       selectedItem = GridView.SelectedItem; 
       editB.Show(); 
       this.Close(); 
       break; 
      } 
      else if (typeValue == "C") 
      { 
       selectedItem = GridView.SelectedItem; 
       editC.Show(); 
       this.Close(); 
       break; 
      } 
      break; 
     case "Delete": 
      this.GridView.Items.Remove(this.GridView.SelectedItem); 
      break; 
    } 
} 

Так что я могу получить как selectedItem.columnType или selectedItem.column3. Но проблема в том, что я не знаю, как передать значения selectedItem только что открытому окну? Я попробовал статический класс { get;set; } для selectedItem, но когда я попытался вызвать его из нового окна, значения все равно null.

+0

Передайте значение SelectedItem в конструкторе этого окна. Вы должны создать его с помощью нового Window2(). – AnjumSKhan

ответ

3

Вы можете создать параметризованный конструктор для своего Window и передать значение SelectedItem в свой экземпляр Window. Что-то вроде этого:

public partial class EditWindow : Window 
{  
    public EditWindow() 
    { 
     InitializeComponent(); 
    } 

    public EditWindow(YourObjectType selectedItem) : this() 
    { 
     var yourSelectedItem = selectedItem; 
    } 
} 

И использовать его как это:

EditWindow editWindow = new EditWindow(selectedItem); 
editWindow.Show(); 
+0

поэтому в моем 'GridContextMenu_ItemClick' я использует' EditA editA = new EditA (selectedItem); 'и я вызываю его в своем новом окне (EditA) с кодом, который вы мне дали, но когда я попытался вызвать' yourSelectedItem.column3' или что-то еще, это привело меня к ошибке «объект не содержит ....», что не так? – Mirza

+0

Nvm Я меняю объект типа на свой класс. Теперь он работает, но значение в вашемSelectedItem.column все еще равно нулю? – Mirza

+0

Убедитесь, что вы задали свойство 'SelectionMode' вашего' GridView' 'Single', предполагая, что пользователь может выбрать только один элемент в списке. –