Привязка ContentControl к UserControl и повторное использование одного и того же экземпляра
Я пытаюсь привязать ContentControl Content к UserControl, который я создал в своей ViewModel. Я не могу использовать метод с привязкой к ViewModel, и тогда UserControl должен быть DataTemplate ViewModel, поскольку мне нужно, чтобы содержимое ContentControl можно было часто менять, используятот же экземпляр UserControls / Views, а не создавать экземпляры представлений каждый раз, когда я перепривязываю.
Однако при установке свойства UserControl на экземпляр UserControl, а затем, когда представление отображается / привязывается к данным, я получаю:Необходимо отключить указанный дочерний элемент от текущего родительского Visual перед подключением к новому родительскому Visual. Несмотря на то, что я ранее нигде не добавлял этот 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>