天天看點

showdialog wpf 如何關閉_WPF用ShowDialog()彈出窗體時控制該窗體的顯示位置,并傳值回父窗體...

原文: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));

}

}

///

/// 檢索指令邏輯

///

///

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中設定相應的判斷(不推薦,如産生變更可能因忘記修改導緻不同步,除非是特簡單的條件);

ShowDialog()彈出的窗體,關閉後,主窗體會閃爍的BUG

如圖,要實作下列等待界面時,等待界面是以ShowDialog彈出的,發現關閉後,主窗體會閃爍一下的BUG,搞半天沒搞明白啥原因. 過了幾天後,搜尋了下發現,在fm.ShowDialog(),顯示出來時 ...

解決IOS safari在input focus彈出輸入法時不支援position fixed的問題

該文章為轉載 我們在做移動web應用的時候,常常習慣于使用position:fixed把一個input框作為提問或者搜尋框固定在頁面底部.但在IOS的safari和webview中,對position ...

設定電腦中的某個程式不彈出UAC使用者控制提示的方法

有使用者發現在電腦開機後總是會彈出UAC使用者賬戶控制視窗,這是因為電腦中的某個程式設定了開機啟動,這樣就會在開機後啟動該程式時出現UAC提示.如果想要省略該提示,可以在電腦中設定該程式不彈出UAC使用者控 ...

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

WPF WebBrowser屏蔽彈出alert ,confirm ,prompt ,showModalDialog() ,window.open()添加Microsoft.mshtml.dll,然後寫 ...

win7如何設定某個軟體不彈出使用者賬戶控制

手動修改系統資料庫: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 鍵下面 ...

Ipad彈出UIAlertControllerStyleActionSheet時發生崩潰

pad彈出UIAlertControllerStyleActionSheet時,在iphone上運作正常,但在ipad上崩潰,解決代碼如下: UIAlertController *alertVc = ...

在子頁面使用layer彈出層時隻顯示遮罩層,不顯示彈出框問題

最近子頁面使用layer彈出層時隻顯示遮罩層,不顯示彈出框,這個問題搞了很久,最後才發現,在子頁面上使用彈出框時,如果隻使用layer.alert()或者layer.open()時,會預設在目前頁面彈 ...

JQuery彈出菜單時禁止頁面(body)滾動

最近在做手機端的彈出菜單,但是菜單彈出來後滑動手機螢幕的話頁面滾動總是會将菜單滑上去,體驗非常不好,是以查了一下彈出菜單時禁止頁面滾動的方法,整理如下: 方法一:彈出菜單時給body和html添加一個 ...

MUI - 解決彈出輸入法時頁面高度變小導緻底部上浮的問題

解決彈出輸入法時頁面高度變小導緻底部上浮的問題 在有輸入框的頁面,當輸入法彈出的時候,底部元素上浮遮蓋了輸入框,影響頁面美觀及功能.查找了一下,頁面變窄是不可避免的.即使是設定絕對固定也是不可以的.因 ...

随機推薦

javascript運動系列第三篇——曲線運動

× 目錄 [1]圓周運動[2]三維圓周 [3]鐘擺運動 [4]抛物線[5]流體運動 前面的話 上一篇介紹了變速運動,但隻實作了直線運動.如果元素的left和top同時運動,并遵循不同的曲線公式,則會進 ...

iOS開發——面試總結(一)

面試總結(一) 通過網絡搜尋和自己總結經曆找了一些IOS面試經常被問道的問題: 1.搞清楚touch事件的傳遞(事件的響應鍊) 事件的響應(responder chain) 隻有繼承了UIRespon ...

校友資訊管理系統&SNS互動平台之使用者需求及概要設計

前言.提綱及說明: 請移步:(部落格園位址:http://www.cnblogs.com/s6cn/p/3516876.html) ...

windows驅動開發推薦書籍

[作者] 豬頭三 個人網站 :http://www.x86asm.com/ [序言] 很多人都對驅動開發有興趣,但往往找不到正确的學習方式.當然這跟驅動開發的本土化資料少有關系.大多學的驅動開發資料都 ...

修改vue element Transfer 穿梭框裡内容區的寬度

python 垃圾回收

# 垃圾回收 # 小整數對象池 # a = 100# python對小整數的定義是[-5,257],這些證書對象是提前建立好的,不會被垃圾回收,再一個python的程式中,所有位于這個範圍内的正式使用 ...

基于ELK的簡單資料分析

原文連結: http://www.open-open.com/lib/view/open1455673846058.html 環境 CentOS 6.5 64位 JDK 1.8.0_20 Elasti ...

Beta階段貢獻配置設定規則

作業要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2382] 在新成員加入後,我們經過讨論,決定沿用alpha階段貢獻分配置設定規則. ...

機器人控制tcp通信參數調優

機器人使用WiFi通信,實作指令下傳,狀态上傳.而WiFi信道平時帶寬較穩定,但會在某些時候突然中斷,造成ping的延時較高,但可以馬上恢複.如果一直ping,則一般情況下ping值很小,但長時間(數 ...

3,Python常用庫之三:Matplotlib

一.Matplotlib基礎知識 Matplotlib中的基本圖表包括的元素 x軸和y軸 axis水準和垂直的軸線 x軸和y軸刻度 tick刻度标示坐标軸的分隔,包括最小刻度和最大刻度 x軸和y軸刻度 ...