私は未完成の次の動作をしています。TransitionElement は基本的に ContentControl であることに注意してください。
BlurBitmapEffect を使用してコントロールのぼかしとぼかしを解除する 2 つのストーリーボードを作成したいと思います。
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 が使用されることに気付きました。