У меня есть MainView, который содержит один ContentControl, ContentControl загружает пользовательский элемент управления по умолчанию при загрузке приложения.
<ContentControl x:Name="MainContentArea" Content="{Binding ActiveControl}"/>
Загружаемый пользовательский элемент управления загружает несколько плагинов (не имеет значения) и при выборе элемента из поля со списком запускает ICommand, который существует в Parent (MainViewModel), используя концепцию MVVM Light для ViewModelLocator.
private void CreateSelectedPlugin(IExtendedUIViewFactory plugin)
{
var pluginStartControl = plugin.Create();
_locator.Main.DefaultCommand.Execute(pluginStartControl);
}
Проблема в том, что ContentControl не обновляется, я могу установить точку останова и увидеть, что команда выполняется в MainViewModel и что отправляемая мной переменная действительна.
public ICommand DefaultCommand { get; set; }
public MainWindowViewModel()
{
DefaultCommand = new RelayCommand<object>(LoadSection, o => true);
}
private void LoadSection(object plugin)
{
ActiveControl = plugin;
//does not matter if i set it to null here
}
Вызов LoadSection или тестовой функции, которая просто устанавливает ContentControl в null, из MainView/MainViewModel, работает, как и ожидалось.
Какое удержание команды, которую я отправляю из элемента управления, имеет в Contentcontrol, из-за чего он не хочет загружать что-то еще?