[英]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.