私は MVVM アーキテクチャを使用してアプリケーションを分離しています。つまり、次のようなものをよく見かけます
var u = new UserControl();
u.Content = new MyCustomType(); // MyCustomType is not a control
UI は、独自の XAML ファイルのリソース ディクショナリに存在するデータ テンプレートを介して定義されます。
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type local:MyCustomType}">
...
アプリケーションの起動時にリソースをロードすると、アプリケーションは喜んで UI を表示します。しかし、データ テンプレートを削除して新しいテンプレート (同じキー、同じデータ型) を追加すると、UI は古いデータ テンプレートを使用したままになります。もちろん、コンテナーのコンテンツをリセットして強制的に更新することもできますが、このように変更についてすべてのコントロールに通知する必要があるため、これはばかげているように思えます。
var tmp = control.Content;
control.Content = null;
control.Content = tmp; // New data template will be used
他のアプローチはありますか?