2015-10-14 98 views
0

我在制作一个WPF应用程序。我有一个静态项目的数据网格。现在我想单击一行显示一个新窗口。如果点击datagrid中的行然后打开新窗口

我在做什么错?

这是我的第二个窗口,我想打开点击时: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

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

请问你的代码的工作? –

+1

您在show函数中调用show函数,看起来像是一个无限循环 – Schuere

回答

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); 
    }   
} 
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(); 
     } 

    } 
} 
相关问题