我正在制作一个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);
}
}