当子窗口在XAML中打开时,对所有者窗口应用效果



如何在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>

最新更新