我正在寻找WPF的一种方法,从用户的角度来看基本上“锁定”用户界面:让它无法在不实际导致锁定状态的情况下进行交互,并直观地显示它已被锁定。
我们的内部网络框架完全符合我的要求。如果你有方便的萤火虫(或类似),你可以亲自看看我在说什么:
1)转到http://www.livetechnology.com/
2)打开firebug控制台
3)输入LT.LiveUI.Util.lockUI(LO.MainSkin.MainArea,{Message:“Optional Text”});进入控制台
您应该看到用户界面以我想要的方式“锁定”。用户无法与界面交互,并且除了让用户意识到隐含地无法使用界面之外,还会显示消息。
这类似于Lightbox将覆盖界面并显示内容的方式。
我的应用程序在网络上做了一些工作需要一些时间,而不是使用简单的模式或禁用我的UI上的每个元素并使其看起来很愚蠢(除了无法使用),我想使用这个效果。
透明的阴影覆盖层将是一个很好的触摸(在我看来)。我(当然)知道我可以在没有带模式对话框的阴影叠加层的情况下完成此操作,但是用户经常会点击那里的UI,但什么都不做。
答案 0 :(得分:0)
不确定;你只需要一个半透明矩形,其可见性绑定到一个布尔“锁”属性(使用BooleanToVisibilityConverter
)。
只要元素可见且命中测试可见,它就会阻止对其下方所有内容的点击访问。我记得,你可能还需要抓一个标签按下并将其标记为已处理,以防止用户跳转到其他控件。
我已经使用这种技术来创建灯箱,并使用了一个按钮作为背景,以便在对话框外点击会将其关闭。
答案 1 :(得分:0)
这是我在阅读了几篇关于修改颜色的alpha以模拟灯箱效果的帖子后所做的。我有一个占据全屏的窗口,它的bacground颜色使用Storyboard动画。只需将您的内容/ 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>