Ich versuche, den Inhalt einer ContentControl an eine UserControl zu binden, die ich in meinem ViewModel instantiiert habe. Ich kann die Methode mit der Bindung an ein ViewModel verwenden und dann die UserControl als DataTemplate des ViewModels festlegen, da ich den Inhalt der ContentControl häufig ändern muss, unter Verwendung derselben Instanz der UserControls/Ansichten, und die Ansichten nicht jedes Mal neu instanzieren möchte, wenn ich sie neu binde.
Wenn ich jedoch die UserControl-Eigenschaft auf eine UserControl-Instanz setze und dann die Ansicht gerendert/datengebunden wird, erhalte ich: Muss das angegebene untergeordnete Element vom aktuellen übergeordneten Visual trennen, bevor es an das neue übergeordnete Visual angefügt wird. Obwohl ich diese UserControl zuvor nirgendwo hinzugefügt habe, habe ich diese Instanz nur erstellt und im Speicher behalten.
Gibt es einen besseren Weg, um zu erreichen, was ich tue?
Im ViewModel
public class MyViewModel : INotifyPropertyChanged
{
//...
private void LoadApps()
{
var instances = new List
{
new Instance1View(),
new Instance2View(),
new Instance3View(),
};
SwitchInstances(instances);
}
private void SwitchInstances(List instances)
{
CenterApp = instances[0];
}
//...
private UserControl _centerApp;
public UserControl CenterApp
{
get { return _centerApp; }
set
{
if (_centerApp == value)
{
return;
}
_centerApp = value;
OnPropertyChanged("CenterApp");
}
}
//...
}
In der View.xaml