开发者

Error trying to bind Content to Window for 2nd time

have the following in my CodeBehind (class name MainHostWindow)

 private object _hostContent = null;

    public object HostContent
    {
        get { return _hostContent; }
        set { _hostContent = value;}
    }

this binds into a ContentControl of my View.

in a different class I do the following:

MainHostWindow host = new MainHostWindow();            


        {
            host.HostContent = MyView;    // this is an instance of a UserControl            
            host.Owner = this._mainWindow;                
            host.DataContext = viewModel;                
        }
host.ShowDialog();

first time it shows the MainHostWindow with the correct Content, 2nd time I get the following exception:

Specified elemen开发者_JAVA百科t is already the logical child of another element. Disconnect it first.


It looks as if you are trying to add the same UserControl (not a new instance of it) to another instance of your MainHostWindow. The error is correct because the same element cannot be the child of two different containers (what would UserControl.Parent return?). You will need to create a new instance of your UserControl.

host.HostContent = new MyView();

are you able to set MyView declaratively in the XAML for MainHostWindow as this would always create a new instance when the Control is created.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜