2011-01-27 71 views
0

我正在尋找一種方式在WPF從本質上「鎖定」UI從用戶的角度來看:使它不可能與實際上導致鎖定條件進行交互,並直觀地顯示它被鎖定。燈箱效果到「鎖定」UI?

我們的內部Web框架完成了我想要做的事情。如果你有螢火蟲(或類似)的方便,你可以看到自己是什麼我談論:

1)去http://www.livetechnology.com/

2)打開Firebug控制檯

3)輸入LT .LiveUI.Util.lockUI(LO.MainSkin.MainArea,{Message:「Optional Text」});進入控制檯

您應該看到用戶界面以我想實現的方式被「鎖定」。用戶不能與界面進行交互,並且顯示消息,除了使用戶明確地意識到界面不能被使用。

這類似於Lightbox如何覆蓋界面並顯示內容。

我的應用程序在網絡上做了一些工作,這需要一些時間,而不是使用簡單的模式或禁用我的用戶界面上的每個元素,並使它看起來很愚蠢(除了無法使用),我想聘用這個效果。

透明,陰影疊加將是一個很好的接觸(在我看來)。我(當然)知道我可以在沒有帶模糊對話框的陰影疊加的情況下完成這個任務,但是用戶通常只需點擊一個用戶界面,但卻什麼也不做。

回答

0

當然;您只需要一個半透明的矩形,其可見性綁定到布爾「鎖定」屬性(使用BooleanToVisibilityConverter)。

只要該元素是可見的並且可見測試,它將阻止點擊訪問下面的所有內容。據我所知,您可能還需要捕捉一個標籤並將其標記爲已處理,以防止用戶切換到其他控件。

我已經使用這種技術來創建燈箱,並且已經使用了一個按鈕作爲背景,這樣在對話框外面點擊就可以消除它。

+0

我知道這個問題被問前一陣子,所以我不知道你是否將能夠幫助我,但我想知道,如果你能解釋一點關於如何創建此矩形並使用booleantovisibilityconverter。我正在試圖爲停靠在我的表單中的用戶控件執行此操作。不幸的是,我的C#知識不如rpkelly。 – nbz 2011-07-21 17:22:42

0

這是我在閱讀幾篇有關修改顏色alpha以模擬燈箱效果的文章後所做的。我有一個窗口要佔據整個屏幕,它的背景顏色是用故事板動畫的。只需將您的內容/ xaml添加到grdContent。希望它有幫助。

$<Window x:Name="window" x:Class="DropShadowEffect.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" WindowState="Maximized" WindowStyle="None" AllowsTransparency="True" > 
<Window.Resources> 
    <Storyboard x:Key="Storyboard1"> 
     <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="window"> 
      <EasingColorKeyFrame KeyTime="0" Value="Transparent"/> 
      <EasingColorKeyFrame KeyTime="0:0:0.5" Value="#66605757"/> 
     </ColorAnimationUsingKeyFrames> 

    </Storyboard> 

</Window.Resources> 
<Window.Triggers> 
    <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/> 
    </EventTrigger> 
</Window.Triggers> 
<Grid Name="grdContent" Width="400" Height="500" Background='#FFFFFFFF'> 
    <TextBlock>your cobtent goes here!!!!!!!!!!</TextBlock> 
</Grid>