原文:http://blog.csdn.net/kiss0622/article/details/5852153

方法一:

1.父窗口代码

Window1.xaml.cs

private void Button_Click(object sender, RoutedEventArgs e)
{
Window2 w2 = new Window2(this.Top, this.Left);//this.Top,this.Left 作用是将当前父窗体的位置传给子窗体 if (w2.ShowDialog()==true)
{
text1.Text = w2.name;
}
}
}

2.子窗口代码

Window2.xaml.cs

  public string name;
public Window2(double x,double y)
{
InitializeComponent();
//启用‘Manual’属性后,可以手动设置窗体的显示位置
this.WindowStartupLocation = WindowStartupLocation.Manual;
this.Top = x;
this.Left = y;
//如需手动绑定事件,如下
        this.but1.AddHandler(Button.ClickEvent,new RoutedEventHandler(OkButton_Click));
} private void but1_Click(object sender, RoutedEventArgs e)
{
name = "hlr";
this.DialogResult = true;//必须设置,否则无法回传
}

如果使用MVVM,当前按钮有command事件,并且command中有判断条件,这里应该相应的做修改,示例如下:

选中DataGrid某行,才允许继续往下执行,即执行父窗口的if (w2.ShowDialog()==true){}内的代码,否则,没选中也执行

var item = this.DataGrid.SelectedItem;
if (item != null)
{
this.DialogResult = true;
}

方法二:使用事件(MVVM下)

场景:通过命令,调出查询窗口,将选中项数据传回

父窗口的VM

#region 信息检索命令
private RelayCommand _SearchCommand; public RelayCommand SearchCommand
{
get
{
return _SearchCommand
?? (_SearchCommand = new RelayCommand(ExecuteSearchCommand));
}
} /// <summary>
/// 检索命令逻辑
/// </summary>
/// <param name="obj"></param>
private void ExecuteSearchCommand(object obj)//object obj
{
AddDialog v = new AddDialog();
v.Closed += v_Closed;
v.ShowDialog();
}
private void v_Closed(object sender, EventArgs e)
{
var frm = (AddDialog)sender;
var item = (ModelAdd)frm.DataGrid.SelectedItem;
if (item != null)
{
var id = item.ID;
}
}
#endregion

存在的隐患:

只要窗口关闭,都会执行v_Closed

场景示例:选中DataGrid某行,点击确认按钮,确认事件中通过一定的判断规则,符合条件则执行v_Closed

可能隐患:用户选中DataGrid某行,但是点击了取消按钮,并无验证“确认事件”中的判断规则,执行v_Closed导致出错

解决:设置共有变量进行状态控制;在v_Closed中设置相应的判断(不推荐,如产生变更可能因忘记修改导致不同步,除非是特简单的条件);

WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体的更多相关文章

  1. ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG

    如图,要实现下列等待界面时,等待界面是以ShowDialog弹出的,发现关闭后,主窗体会闪烁一下的BUG,搞半天没搞明白啥原因. 过了几天后,搜索了下发现,在fm.ShowDialog(),显示出来时 ...

  2. 解决IOS safari在input focus弹出输入法时不支持position fixed的问题

    该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position ...

  3. 设置电脑中的某个程序不弹出UAC用户控制提示的方法

    有用户发现在电脑开机后总是会弹出UAC用户账户控制窗口,这是因为电脑中的某个程序设置了开机启动,这样就会在开机后启动该程序时出现UAC提示.如果想要省略该提示,可以在电脑中设置该程序不弹出UAC用户控 ...

  4. WPF WebBrowser屏蔽弹出alert ,confirm ,prompt ,showModalDialog() ,window.open()

    WPF WebBrowser屏蔽弹出alert ,confirm ,prompt ,showModalDialog() ,window.open()添加Microsoft.mshtml.dll,然后写 ...

  5. win7如何设置某个软件不弹出用户账户控制

    手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...

  6. Ipad弹出UIAlertControllerStyleActionSheet时发生崩溃

    pad弹出UIAlertControllerStyleActionSheet时,在iphone上运行正常,但在ipad上崩溃,解决代码如下: UIAlertController *alertVc = ...

  7. 在子页面使用layer弹出层时只显示遮罩层,不显示弹出框问题

    最近子页面使用layer弹出层时只显示遮罩层,不显示弹出框,这个问题搞了很久,最后才发现,在子页面上使用弹出框时,如果只使用layer.alert()或者layer.open()时,会默认在当前页面弹 ...

  8. JQuery弹出菜单时禁止页面(body)滚动

    最近在做手机端的弹出菜单,但是菜单弹出来后滑动手机屏幕的话页面滚动总是会将菜单滑上去,体验非常不好,所以查了一下弹出菜单时禁止页面滚动的方法,整理如下: 方法一:弹出菜单时给body和html添加一个 ...

  9. MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题

    解决弹出输入法时页面高度变小导致底部上浮的问题 在有输入框的页面,当输入法弹出的时候,底部元素上浮遮盖了输入框,影响页面美观及功能.查找了一下,页面变窄是不可避免的.即使是设置绝对固定也是不可以的.因 ...

随机推荐

  1. Android源码分析之MessageQueue

    下面让我们花些时间来看看MessageQueue的具体实现,不过在分析代码之前让我们来理解下在类开头的一大段comments. MessageQueue是比较低层的类,是持有Message(在Loop ...

  2. Java 网络编程----基本概念

    网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...

  3. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has p

    2014-09-16 15:47:51.590:WARN:oejs.ErrorPageErrorHandler:EXCEPTION org.apache.jasper.JasperException: ...

  4. find / -name *.py | xargs grep "domain" | wc -l

    http://world77.blog.51cto.com/414605/209125 http://blog.csdn.net/windone0109/article/details/2817792 ...

  5. 利用JS实现手机访问PC网址自动跳转到wap网站

    方法一:使用百度siteapp中的js进行判断 <script src="http://siteapp.baidu.com/static/webappservice/uaredirec ...

  6. Sql Server 高频,高并发访问中的键查找死锁解析

    死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库 ...

  7. 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突

    ================声明===================== 本文原创,转载请保持文章的完整性(含本声明),并显要的著名作者和出处. 本文链接:http://blog.csdn.ne ...

  8. 【原创】Java实现手机号码归属地查询

    网络上已经有很多的手机号码归属地查询的API接口,但是这些接口总是有一些大大小小的缺陷. 总结一下这些缺陷: 1.要直接将它的搜索框链接形式粘到自己的页面,点击查询的时候还要跳转到他们的网站来展示归属 ...

  9. Windows下MongoDB安装与设置

    最近在研究传奇已久的MongoDB,遇到很多问题,将整理好的Windows下的MongoDB整体到连接过程分享给大家,也留给自己. 第一步:下载http://www.mongodb.org/downl ...

  10. NoSQL介绍

    NoSQL(Not Only SQL),是一种非关系型数据库:说到这里,大家需要了解关系型数据库和非关系型数据库的区别,可参考:从关系型数据库到非关系型数据库. NoSQL是以key-value形式存 ...