我正在制作一个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的新手,我认为我混淆了应该放置方法的地方。但我不确定。
答案 0 :(得分:0)
也许是代码
internal class WindowMail
{
internal void Show()
{
WindowMail wm = new WindowMail();
wm.Show();
}
}
需要一点改变。我在这里认为WindowMail类实际上是WindowMail.xaml文件之后的cs类。
在这里你需要改变
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);
}
}
答案 1 :(得分:0)
使用以下代码
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();
}
}
}