如何从用户控件修改主机窗口?

时间:2018-03-29 11:16:20

标签: c# wpf xaml user-controls

我正在使用WPF对c#应用程序进行编码

我有一个主窗口,其中包含一个名为“SelectionGrid”的网格。这个网格将包含控制用户,我的问题是我想从USER CONTROL本身修改(添加/删除)该网格中的控件用户

例如: SelectionGrid主持用户控件“菜单”在这个菜单中有一个按钮,我想从这个按钮中删除菜单用户控件并在这个SelectionGrid中添加另一个用户控件

主窗口代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        UserControl usc = new Menu();
        SelectionGrid.Children.Add(usc);
    }}

菜单用户控制代码:

public partial class Menu : UserControl
{
    public Menu()
    {   
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        // want to add Another User Control in SelectionGrid
    }

1 个答案:

答案 0 :(得分:1)

首先,将您的userControl放在像Grid这样的容器控件中。然后您可以从usercontrol轻松访问和修改网格,如下所示:

 var parent = (Grid)this.Parent;
 ///do what you want to do with parent

一点知识共享:以下代码可用于访问PageUserControl等控件的父级:

public static T FindParent(DependencyObject child)
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null)
    return null;
T parent = parentObject as T;
if (parent != null)
    return parent;
else
    return FindParent<T>(parentObject);
}

private void test()
{
  ControlTypeHere parent = FindParent<ControlTypeHere>(this);

希望这会有所帮助:)