【问题标题】:Open new UserControl in the mainWindows在 mainWindows 中打开新的 UserControl
【发布时间】:2010-03-09 04:09:21
【问题描述】:

公共部分类 Window1:窗口 { 公共窗口1() { 初始化组件(); }

    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) myMainWinodw 的一个孩子) 我已经尝试从其他方法调用 AddItemToContainer 方法,但没有任何反应

大家有什么建议

【问题讨论】:

    标签: wpf


    【解决方案1】:

    这种方法可能会有所帮助:

    调用容器控件并将其修改为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);
        }
    }
    

    【讨论】:

      【解决方案2】:

      是的,这有帮助,但它并不能真正取代 UC1。它只是将它推了一点点,并在主窗口中占据了一小块空间,如果你喜欢 http://startou.com/file/630-9411954b18.html,这里有一些带有解释的快照@

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2017-06-13
        • 1970-01-01
        相关资源
        最近更新 更多