2013-07-24 47 views
1

我有一個用戶控件,它具有取消和確定按鈕。像例如wpf擴展工具包中的Wizard控件。如何從UserControl內部關閉對話窗口

當用戶單擊UserControl中的cancel或ok時,如何使用此控件關閉窗口?

我無法在OnOk處理程序中設置DialogResult = true,因爲我的控件不是窗口。爲了找到窗戶,我是否必須走上視覺樹,還是有更好的解決方案?

控制:

<UserControl x:Class="WizardTest.WizardControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<DockPanel> 
    <UniformGrid DockPanel.Dock="Bottom" Columns="2"> 
     <Button Click="OnCancel">Cancel</Button> 
     <Button Click="OnOk">Finish</Button> 
    </UniformGrid> 
</DockPanel> 

回答

1

你需要得到在活動Window

var w = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive); 
if (w == null) { return; } 

w.Close();