如果单击数据网格中的行,则打开新窗口



我正在制作一个WPF应用程序。我有一个静态项目在它的数据网格。现在我想在单击一行时显示一个新窗口。

我做错了什么?

这是我点击时要打开的第二个窗口:WindowMail.cs

using System;
namespace Phish_Finder
{
    internal class WindowMail
    {
        internal void Show()
        {
            WindowMail wm = new WindowMail();
            wm.Show();
        }
    }
}

这是我的第一个窗口Mainwindow.xaml.cs

的方法
   private void DataGrid_MouseDoubleClick(object sender, RoutedEventArgs e)
    {
        var currentRowIndex = URLGRID.Items.IndexOf(URLGRID.CurrentItem);
        {
            if (URLGRID.CurrentItem != null)
            {
                WindowMail wm = new WindowMail();
                wm.Show();
            }
        }
    }

这是我的数据网格

DataGrid x:Name="URLGRID" HorizontalAlignment="Left" Height="400"
Margin="60,300,0,0" VerticalAlignment="Top" Width="1350" Loaded="DataGrid_Loaded" 
MouseDoubleClick="DataGrid_MouseDoubleClick" 

我是WPF的新手,我认为我混淆了应该把方法放在哪里。

使用以下代码

private void DataGrid_MouseDoubleClick(object sender, RoutedEventArgs e)
{
    var currentRowIndex = URLGRID.Items.IndexOf(URLGRID.selectedItem);
    {
        if (URLGRID.selectedItem != null)
        {
            WindowMail wm = new WindowMail();
            wm.Show();
        }
    }
}

也许代码

internal class WindowMail
{
    internal void Show()
    {
        WindowMail wm = new WindowMail();
        wm.Show();
    }
}

需要一点改动。我认为类WindowMail实际上是继WindowMail之后的cs类。xaml文件。

这里你需要改变

        WindowMail wm = new WindowMail();
        wm.Show();

行成

this.Show(); //Standard function of a window

否则你的代码会不断重复无限循环…

还有,需要更改的地方:我相信函数Show已经存在于窗口级别。所以像下面这样重命名它,或者重写函数。

public void OpenDialog(bool asDialog)
{
    if(asDialog)
        this.ShowDialog();
    else
        this.Show();
}

然后,调用你的函数:

private void DataGrid_MouseDoubleClick(object sender, RoutedEventArgs e)
{        
   if (URLGRID.SelectedItem!= null)
   {
       WindowMail wm = new WindowMail();
       wm.OpenDialog(true);
   }        
}

相关内容

最新更新