在我的CodeBehind(类名MainHostWindow)中有以下内容
private object _hostContent = null;
public object HostContent
{
get { return _hostContent; }
set { _hostContent = value;}
}
这会绑定到我的View的ContentControl。
在另一个班级我做以下事情:
MainHostWindow host = new MainHostWindow();
{
host.HostContent = MyView; // this is an instance of a UserControl
host.Owner = this._mainWindow;
host.DataContext = viewModel;
}
host.ShowDialog();
第一次显示具有正确内容的MainHostWindow,第二次出现以下异常:
指定的元素已经是另一个元素的逻辑子元素。首先断开它。
答案 0 :(得分:3)
看起来您正在尝试将相同的UserControl(不是它的新实例)添加到MainHostWindow的另一个实例。错误是正确的,因为相同的元素不能是两个不同容器的子元素(UserControl.Parent会返回什么?)。您需要创建UserControl的新实例。
host.HostContent = new MyView();
您是否能够在XAML for MainHostWindow中以声明方式设置MyView,因为这将在创建Control时始终创建新实例。