Vincular un ContentControl a UserControl y reutilizar la misma instancia
Estoy intentando enlazar el contenido de un ContentControl a un UserControl que he creado en mi ViewModel. No puedo usar el método para enlazar con un ViewModel y luego hacer que el UserControl sea el DataTemplate del ViewModel, ya que necesito que el contenido del ContentControl pueda cambiar con frecuencia, usando elmisma instancia de UserControls / Views, y no cree instancias de las vistas cada vez que vuelva a enlazar.
Sin embargo, al configurar la propiedad UserControl en una instancia UserControl, y luego cuando la vista se representa / enlazada a datos, obtengo:Debe desconectar el hijo especificado del Visual primario actual antes de adjuntar el Visual primario nuevo. A pesar de que no he agregado este UserControl a ningún lugar anteriormente, simplemente creé esta instancia anteriormente y la guardé en la memoria.
¿Hay una mejor manera de lograr lo que estoy haciendo?
En el 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");
}
}
//...
}
En el view.xaml
<ContentControl Content="{Binding CenterApp}"></ContentControl>