繁体   English   中英

从控件 WPF C# 中删除 BlurEffect

[英]Remove a BlurEffect from control WPF C#

我有一个包含文本块的边框,它应用了模糊效果:

<Border Grid.Row="2">
    <Border.Effect>
        <BlurEffect Radius="5" />
    </Border.Effect>
    <TextBlock/>
</Border>

我想在按下按钮时删除此 BlurEffect,但我找不到如何。 我尝试将半径设置为 0,但文字仍然模糊。

任何帮助将不胜感激。

一种选择是通过触发器或数据触发器中的设置器设置半径。 然而,这有点复杂,因为您不能在效果内添加麦粒肿。 (另请参阅评论中@silverfighter 提供的链接。)

一个简单的解决方案是将Radius绑定到一个属性并从代码中更改它,如下所示:

<Border>
   <Border.Effect>
       <BlurEffect Radius="{Binding MyBlurRadius}" />
   </Border.Effect>
</Border>

然后,您的 ViewModel 需要实现INotifyPropertyChanged接口并提供MyBlurRadius属性,该属性在其设置器中调用 OnPropertyChanged OnPropertyChanged()

public MyViewModel : INotifyPropertyChanged
{
    private int _myBlurRadius;

    public int MyBlurRadius
    {
        get { return _myBlurRadius; }
        set
        {
            if (_myBlurRadius == value)
                return;
            _myBlurRadius = value;
            OnPropertyChanged();
        }
    }
}

由于没有其他设置器重新更改半径,因此一旦将半径设置为 0,模糊就会消失。

这种解决方案的缺点是您必须从代码内部处理可视化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM