主な理由は、封印されたオブジェクトだと思います。スタイル階層がある場合:
Style A
/ \
Style A1 Style A2
これは難しいシナリオではないかもしれません。 StyleA
は動的リソースを使用しているため、そのリソースが変更されると、Style A1
とStyle A2
はそれぞれBasedOn
プロパティを変更する必要があります。ただし、スタイルがアプリケーションで使用されると、それはシールされたオブジェクトになります。 Style A
は不変になります。あなたが使用することができます
つの回避策は次のとおりです。
Style A
を変更する必要があります。
- 新しい
Style A
リソースになる新しいスタイルオブジェクトを作成します。
Style A1
とStyle A2
の新しいバージョンを作成します。 Setters
、Resources
などのコピーを作成するコピー手順を作成する必要があります。BasedOn
をStyle A
の新しいバージョンに設定します。
- 3つの新しいスタイルがそこにあるようにリソースコレクションを更新します。
{DynamicResource StyleA1}
と{DynamicResource StyleA2}
は今(ステップ4から)は、これらのリソースの変更事実をピックアップし、自動的にすべての参照を更新する必要があります。
これは非常に簡単なシナリオです。実世界スタイルの階層は、特に複数のファイルにまたがっていて、結合された辞書に由来する場合は、より複雑になります。
私はあなたの問題を理解し、助けました。
別の(Ux)チームが基本スタイルを作成します。開発者は、基本スタイルに加えていくつかのプロパティを設定したいと考えています。理想的には、これはDevStyle BasedOn "DynamicResource UxStyle"が助けてくれたシナリオです。これが不可能な場合は、コントロールに適用する前に2つのスタイルをマージする選択肢は何ですか? – Gishu