Я пытаюсь привязать ContentControl Content к UserControl, который я создал в своей ViewModel. Я не могу использовать метод с привязкой к ViewModel, а затем сделать UserControl DataTemplate ViewModel, так как мне нужно, чтобы ContentControl мог часто меняться, используя тот же экземпляр UserControls / Views, а не создавать экземпляры представлений при каждом повторном связывании.
Однако при установке свойства UserControl в экземпляр UserControl, а затем при визуализации / привязке представления к данным я получаю: Необходимо отключить указанный дочерний элемент от текущего родительского визуала перед присоединением к новому родительскому визуалу. Несмотря на то, что я ранее никуда не добавлял этот UserControl, я просто создал этот экземпляр ранее и сохранил его в памяти.
Есть ли лучший способ добиться того, что я делаю?
В ViewModel
public class MyViewModel : INotifyPropertyChanged
{
//...
private void LoadApps()
{
var instances = new List<UserControl>
{
new Instance1View(),
new Instance2View(),
new Instance3View(),
};
SwitchInstances(instances);
}
private void SwitchInstances(List<UserControl> instances)
{
CenterApp = instances[0];
}
//...
private UserControl _centerApp;
public UserControl CenterApp
{
get { return _centerApp; }
set
{
if (_centerApp == value)
{
return;
}
_centerApp = value;
OnPropertyChanged("CenterApp");
}
}
//...
}
В View.xaml
<ContentControl Content="{Binding CenterApp}"></ContentControl>