2012-07-31 24 views
0

拜多層次的窗口,模態效應在WPF

我一直無法找到一個方法來申請一個「衰落」或「變暗」我的應用程序會出現一個模式窗口時。我有多個窗口,所以可以說應用程序爲window1,可以啓動window2,它可以啓動模式窗口3。當我嘗試應用任何效果時,我似乎只能使直接父窗口(window2)或整個顯示器空間(我不想要)變暗(或模糊或其他任何我感覺)。

如何將效果應用於應用程序的所有窗口,只保留當前活動/模態的效果?

回答

0

您可以添加一個對象(boolean?)到App對象的資源中,並綁定您放入每個窗口的疊加層。

綁定窗口的可見性和IsEnabled屬性以防止用戶切換到疊加層下面的控件。

當您打開或關閉模式對話框時,切換對象。

<Application x:Class="WpfApplication1.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:sys="clr-namespace:System;assembly=mscorlib" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
      <sys:Boolean x:Key="IsShowingModalDialog">false</sys:Boolean> 
    </Application.Resources> 
</Application> 
+0

絕對是我不會想到的事情。但由於窗戶數量龐大,我們決定暫時擱置模態效果。但是你的答案肯定是後面可能解決方案的列表。 – 2012-08-01 15:44:51

+0

個人而言,我不喜歡有多個窗口。在具有多個View(UserControl)的應用程序中,我向基類添加了一點代碼,用於註冊窗口顯示模式對話框時由窗口發送的消息(MVVMLight Messenger)(ShowingModalDialogMessage)的視圖,以及更改UserControl的VisualState。 – 2012-08-01 16:13:56