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

how to modify the host window from a user control?

我正在使用 WPF 编写一个 C# 应用程序

我有一个主 Window,其中包含一个名为“SelectionGrid”的网格。这个网格将包含控制用户,我的问题是我想从用户控制本身修改(add/delete)那个网格中的控制用户

例如: SelectionGrid 在这个菜单中承载用户控件“菜单”,那里有一个按钮,我想从此按钮删除菜单用户控件并在此 SelectionGrid

中添加另一个用户控件

主要window代码:

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
    }

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

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

一点knowledge-sharing:下面的代码可用于访问像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);

希望对您有所帮助:)