コントロールのスタイルが変更されたときに通知を受けるアプリケーションが必要です。私はWPFコントロールのスタイルが変更されたときにいくつかのアクションを行う必要があります。いくつかのイベントトリガを適用することも、通知することもできます。WPFコントロールのスタイルの通知が必要
最高のお礼
コントロールのスタイルが変更されたときに通知を受けるアプリケーションが必要です。私はWPFコントロールのスタイルが変更されたときにいくつかのアクションを行う必要があります。いくつかのイベントトリガを適用することも、通知することもできます。WPFコントロールのスタイルの通知が必要
最高のお礼
解決策はいくつかあります。あなたのC#コードのどこかで通知を受けるにしたい場合は
は、まず、あなたのコントロールのStyle
プロパティに変更ハンドラを購読することができます:
DependencyPropertyDescriptor.FromProperty(Button.StyleProperty, typeof(Button))
.AddValueChanged(btn, (s, e) =>
{
// Style has changed.
});
(あなたが終わった後.RemoveValueChanged()
を呼び出すことを忘れないでください。 )
もう1つの方法は、ソースパスをコントロールのStyle
に設定してBinding
を作成することです。バインディングターゲットは、たとえば、何らかのカスタムコントロール、または変更に対応したいViewModelなどです。または、これらのいずれかがない場合は、バインディングターゲットをTag
プロパティに設定し、ValueConverter
を使用してTag="{Binding Style, ElementName=btn, Converter={StaticResource MyStyleInterceptor}}"
などのような変更を代行することができます。
Tag
を不正使用したくない場合は、この目的のためにカスタムの添付プロパティを作成することもできます。
「スタイルが変更されたとき」とはどういう意味ですか?コントロールのスタイルを動的に更新することはできないためです。トリガに基づいて一部のプロパティを更新することはできますが、新しいスタイルをコントロールに再割り当てすることはできません。 –
[OnApplyTemplate](https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.onapplytemplate(v = vs.110).aspx)が必要な場合があります。コントロールのそのメソッドは、スタイルが設定されるたびに呼び出されます。 – gomi42
@Evangelink任意のWPFコントロールの「スタイル」を何回でも変更できます(https://msdn.microsoft.com/en-us/library/ms745683(v = vs.110).aspx)あなたのXAMLまたはC#コードで。 – haindl