来自usercontrol的WPF调用方法parent

时间:2014-02-23 22:29:31

标签: c# wpf methods user-controls parent

我想在WPF中调用来自用户控件的方法

我有一个带有列表的窗口,我有一个获取此列表的方法。

private ObservableCollection<int> _lst;

public MainWindow()
{
     InitializeComponent();

     getList();
    }

public void getList()
{
    _lst = List<int>(); 
}

在此页面中,我使用了usercontrol:

UserControlAAA userControl = new UserControlAAA ();

gridDatos.Children.Add(userControl);

我想在usercontrol中执行类似的操作:

Window win = Window.GetWindow(this);

win.getList();

但我不能调用win.getList();

我想从我的usercontrol调用方法getList,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:6)

您需要将Window对象转换为您正在使用的特定窗口类型 - 在您的情况下为MainWindow

MainWindow win = (MainWindow)Window.GetWindow(this);
win.getList();

但是,在用户控件和托管的窗口之间进行这种耦合并不明智,因为这意味着您只能在MainWindow类型的窗口中使用它。最好在用户控件中公开依赖项属性并将列表绑定到该属性 - 这样用户控件将拥有它所需的数据,并且它也可以在任何类型的窗口中重用。

答案 1 :(得分:0)

@Adi Lester的解决方案正在运行,但它破坏了WPF编码标尺。正确的方法是使用事件,例如下面的链接的答案 https://stackoverflow.com/a/19384953/3099317