第二次尝试将内容绑定到Window时出错

时间:2011-03-22 01:06:37

标签: wpf mvvm

在我的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,第二次出现以下异常:

  

指定的元素已经是另一个元素的逻辑子元素。首先断开它。

1 个答案:

答案 0 :(得分:3)

看起来您正在尝试将相同的UserControl(不是它的新实例)添加到MainHostWindow的另一个实例。错误是正确的,因为相同的元素不能是两个不同容器的子元素(UserControl.Parent会返回什么?)。您需要创建UserControl的新实例。

host.HostContent = new MyView();

您是否能够在XAML for MainHostWindow中以声明方式设置MyView,因为这将在创建Control时始终创建新实例。