如何在XAML中打开子窗口时应用例如模糊效果?
当我在代码后面设置子窗口的所有者时,我正在应用此效果,但我正在寻找一种在XAML中应用它的方法。有什么可以完成这一点吗?
提前感谢!
一种简单的方法是捕捉样式中IsActive
属性的更改。当子窗口弹出时,父窗口将被停用:
<Window.Style>
<Style TargetType="Window">
<Style.Triggers>
<Trigger Property="IsActive" Value="False">
<Setter Property="Effect">
<Setter.Value>
<BlurEffect Radius="5" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Style>
这种方法的缺点是,当您从应用程序切换时,窗口也会被停用。如果这对你来说是一个问题,那么你可能最好坚持在弹出对话框时在代码隐藏中应用这个效果。
对于可接受的答案,设计时的一个小改进是MultiTrigger。这样就可以找到一个属性检查,它在运行时总是为真,但在设计时总是为假。例如,没有很好记录的ToolTip属性。
<Window.Style>
<Style TargetType="Window">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsActive" Value="False" />
<Condition Property="ToolTip" Value="A Tooltip"/>
</MultiTrigger.Conditions>
<Setter Property="Effect">
<Setter.Value>
<BlurEffect/>
</Setter.Value>
</Setter>
</MultiTrigger>
</Style.Triggers>
</Style>
</Window.Style>