C# WPF - 将点击事件的值传递给其他 class 文件
C# WPF - Pass value from click event to other class file
我使用的 RadGridView
有 11 行和很多列,我只显示 2 列,即名称和类型。我为行创建了一个 ContextMenu
,如果我单击它,将打开 new window。假设我在 columnType
中有 3 个不同的值,即 A、B、C。我有 ContextMenu
的点击事件,如下所示:
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
值传递给刚刚打开的 window ?我为 selectedItem
尝试了 { get;set; }
静态 class,但是当我尝试从新的 window 调用它时,值仍然为空。
您可以为 Window
创建参数化构造函数,并在 Window
实例化时传递 SelectedItem
值。像这样:
public partial class EditWindow : Window
{
public EditWindow()
{
InitializeComponent();
}
public EditWindow(YourObjectType selectedItem) : this()
{
var yourSelectedItem = selectedItem;
}
}
并像这样使用它:
EditWindow editWindow = new EditWindow(selectedItem);
editWindow.Show();
我使用的 RadGridView
有 11 行和很多列,我只显示 2 列,即名称和类型。我为行创建了一个 ContextMenu
,如果我单击它,将打开 new window。假设我在 columnType
中有 3 个不同的值,即 A、B、C。我有 ContextMenu
的点击事件,如下所示:
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
值传递给刚刚打开的 window ?我为 selectedItem
尝试了 { get;set; }
静态 class,但是当我尝试从新的 window 调用它时,值仍然为空。
您可以为 Window
创建参数化构造函数,并在 Window
实例化时传递 SelectedItem
值。像这样:
public partial class EditWindow : Window
{
public EditWindow()
{
InitializeComponent();
}
public EditWindow(YourObjectType selectedItem) : this()
{
var yourSelectedItem = selectedItem;
}
}
并像这样使用它:
EditWindow editWindow = new EditWindow(selectedItem);
editWindow.Show();