我在 UserControl 中有一个按钮,它应该在主 window 中调用一个方法
I Have a Button in a UserControl which should call a method in the main window
我想通过用户控件(我的边栏)中的按钮触发主要 Windows 中的方法。我该怎么做?
您可以通过在按钮 void 中调用以下内容来实现此目的。
private void Button_Click(object sender, RoutedEventArgs e)
{
Window parentWindow = Window.GetWindow(this);
parentWindow.Foo() // Foo is your Functions name inside of the main window.
}
如果这不起作用,您可以将 Window.GetWindow(this) 的结果转换为 MainWindow,如下所示
MainWindow parentWindow = (MainWindow) Window.GetWindow(this);
parentWindow.Foo();
然而,这是一个非常糟糕的 class 设计,因为现在您的用户控件取决于嵌入特定的 window。
您应该做的是向父控件可以订阅的用户控件添加一个事件。
public event EventHandler myEventHandler;
private void Button_Click(object sender, RoutedEventArgs e)
{
var handler = myEventHandler;
if (handler != null) handler(this, EventArgs.Empty);
}
您也可以使用不同于此处提供的事件处理程序来满足您的需要。
我想通过用户控件(我的边栏)中的按钮触发主要 Windows 中的方法。我该怎么做?
您可以通过在按钮 void 中调用以下内容来实现此目的。
private void Button_Click(object sender, RoutedEventArgs e)
{
Window parentWindow = Window.GetWindow(this);
parentWindow.Foo() // Foo is your Functions name inside of the main window.
}
如果这不起作用,您可以将 Window.GetWindow(this) 的结果转换为 MainWindow,如下所示
MainWindow parentWindow = (MainWindow) Window.GetWindow(this);
parentWindow.Foo();
然而,这是一个非常糟糕的 class 设计,因为现在您的用户控件取决于嵌入特定的 window。
您应该做的是向父控件可以订阅的用户控件添加一个事件。
public event EventHandler myEventHandler;
private void Button_Click(object sender, RoutedEventArgs e)
{
var handler = myEventHandler;
if (handler != null) handler(this, EventArgs.Empty);
}
您也可以使用不同于此处提供的事件处理程序来满足您的需要。