2011-01-27 46 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>