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.columnTypeselectedItem.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();