Имам 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, което го кара да не иска да зареди нещо друго?