Я использую архитектуру MVVM, чтобы отделить мое приложение. То есть вы часто видите что-то вроде
var u = new UserControl();
u.Content = new MyCustomType(); // MyCustomType is not a control
Пользовательский интерфейс определяется с помощью шаблонов данных, которые находятся в словарях ресурсов в своих собственных файлах XAML
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type local:MyCustomType}">
...
Я загружаю ресурсы при запуске приложения, и приложение с радостью отображает мой пользовательский интерфейс. Но если я удаляю шаблон данных и добавляю новый (тот же ключ, тот же тип данных), пользовательский интерфейс все еще использует старый шаблон данных. Конечно, я могу переустановить содержимое моего контейнера для принудительного обновления, но это кажется глупым, потому что я должен уведомлять каждый элемент управления об изменении, как это
var tmp = control.Content;
control.Content = null;
control.Content = tmp; // New data template will be used
Есть ли другие подходы?