在主Windows中打开新的用户控件

时间:2010-03-09 04:09:22

标签: wpf

public partial class Window1:Window     {         public Window1()         {             的InitializeComponent();         }

    private void ToggleButton_Checked(object sender, RoutedEventArgs e)
    {
        switch ((sender as Button).Content.ToString())
        {
            case "UserControl 1":
                AddItemToContainer(new UserControl1());
                break;
            case "UserControl 2":
                AddItemToContainer(new UserControl2());
                break;
            case "UserControl 3":
                AddItemToContainer(new UserControl3());
                 break;
            default:
                break;
        }
    }

    void AddItemToContainer(UIElement _myElement)
    {
            Grid.SetColumn(_myElement, 1);
            HostContainer.Children.Add(_myElement);
    }
}
}
}

有了这个,我可以在myMainwindow中打开一个新的userControl

让我们说像myMainWinodw这样的东西,现在我试图点击我的userControl中的一个按钮,这样我就打开了另一个取代第一个的userControl

我解释说:

我有mainWindows它有3个按钮第一个打开第一个UserControl第二个打开第二个userControl而第三个打开最后一个UserControl,想象我打开第一个UserControl让它叫它UC1,

在UC1中我有一个按钮打开第二个userControl(我们称之为UC2)我喜欢当我从UC1中按下按钮时UC2打开并代替UC1(当然UC2仍然是myMainWinodw的孩子) 我已经尝试从其他方法中调用AddItemToContainer方法但没有发生任何事情

请提出任何建议

2 个答案:

答案 0 :(得分:0)

这种方法可能有所帮助:

调用容器控件并修改它的Children。这个例子假设容器控件是一个Grid。

Window1的C#代码

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        HostContainer.Children.Add(new UserControl1(HostContainer));
    }
}

UserControl1的C#代码

public partial class UserControl1 : UserControl
{
    Grid _hostContainer; 

    public UserControl1(Grid HostContainer)
    {
        InitializeComponent();
        _hostContainer = HostContainer;
    }

    private void ToggleButton_Checked(object sender, RoutedEventArgs e)
    {
        UserControl2 UC2 = new UserControl2();
        _hostContainer.Children.Add(UC2);
    }
}

答案 1 :(得分:0)

是的,这有帮助,但它并不真正取代UC1它只是把它变成了一点点,并在主要窗口的litelle空间这里有一些解释,如果你喜欢http://startou.com/file/630-9411954b18.html