如何在wpf中的另一个用户控件上的按钮上更改用户控件?

时间:2019-09-19 05:07:37

标签: c# .net wpf

我尝试使用另一个usercontol按钮切换usercontrol,然后在wpf应用程序的主窗口中设置第二个usercontol,

例如

  1. wpf应用程序的主窗口
  2. user_list用户控件
  3. add_user usercontol

使用user_list用户控件按钮并切换add_user用户控件,此用户控件是在主窗口中设置的此用户控件(add_user用户控件)

user_list.xaml enter image description here

  1. add_user.xaml

1 个答案:

答案 0 :(得分:0)

您有很多无需使用其他框架即可实现此目标的方法:

  • 在您的add_user中同时具有两个用户控件user_listMainWindow.xaml
<Grid>
    <local:user_list x:Name="userList"></local:user_list>
    <local:add_user x:Name="addUser" Visibility="Hidden"></local:add_user>
</Grid>

然后在代码背后的click事件处理程序中,切换Visibility属性:

private void Button_Click(object sender, EventArgs e) {
    userList.Visibility = Visibility.Hidden;
    addUser.Visibility = Visibility.Visible;
    //Do other stuff like update data if needed
}
  • 您的UserControl中只有主user_list MainWindow是这样的:
<Grid>
    <local:user_list x:Name="userList"></local:user_list>
</Grid>

并创建并显示一个新的Window,以在后面的代码中显示您的add_user控件:

private void Button_Click(object sender, EventArgs e) {
    var window = new Window();
    window.SizeToContent = SizeToContent.WidthAndHeight;
    window.Content = new add_user();
    window.ShowDialog() //blocking call
}
  • 代替创建新的Window,您可以将add_user控件动态添加到现有MainWindow的可视树中,如下所示:
<Grid>
    <local:user_list x:Name="userList"></local:user_list>
    <ContentControl x:Name="contentControl"></ContentControl>
</Grid>

以及背后的代码:

private void Button_Click(object sender, EventArgs e) {
    contentControl.Content = new add_user();
}