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方法但没有发生任何事情
请提出任何建议
答案 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