我有以下未完成的行为。请注意,TransitionElement 基本上是一个 ContentControl。
我想创建两个使用 BlurBitmapEffect 来模糊和取消模糊控件的故事板。
如果 ContentControl Enabled 属性设置为 false,我想添加情节提要并开始模糊。
如果 Enabled 设置为 true,我想运行一个故事板来取消模糊控件,并在完成后删除两个故事板,有效地删除任何位图效果。
class ContentControlBehavior : Behavior<TransitionElement>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.IsEnabledChanged += AssociatedObject_IsEnabledChanged;
}
protected override void OnDetaching()
{
AssociatedObject.IsEnabledChanged -= AssociatedObject_IsEnabledChanged;
base.OnDetaching();
}
void AssociatedObject_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.NewValue == false)
{
//Blur
}
else
{
//UnBlur and remove storyboards and any bitmap effects.
}
}
}
当我锁定和解锁我的应用程序时,我正在这样做。
我发现通过带有样式的 XAML 执行此操作会对图形性能产生巨大影响。然后我在下面找到了一些注释。所以我想为什么不应用这些故事板,然后将它们完全删除。
小心使用 WPF 位图效果。在我写这篇文章的时候,WPF 位图效果是在软件模式下呈现的。任何应用效果的对象也将在软件中呈现。位图效果不应应用于大型视觉效果。此外,效果的动画属性会降低性能。此时,我建议您谨慎使用位图效果,并将其用于按钮、文本框等相对较小的视觉 UI 对象。随意制作动画效果,但我再次推荐相对较小、微妙的动画。
我刚刚注意到 BitmapEffect 已被贬值,而 Effect 是可以使用的。