我想在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,但我不知道该怎么做。
答案 0 :(得分:6)
您需要将Window
对象转换为您正在使用的特定窗口类型 - 在您的情况下为MainWindow
:
MainWindow win = (MainWindow)Window.GetWindow(this);
win.getList();
但是,在用户控件和托管的窗口之间进行这种耦合并不明智,因为这意味着您只能在MainWindow
类型的窗口中使用它。最好在用户控件中公开依赖项属性并将列表绑定到该属性 - 这样用户控件将拥有它所需的数据,并且它也可以在任何类型的窗口中重用。
答案 1 :(得分:0)
@Adi Lester的解决方案正在运行,但它破坏了WPF编码标尺。正确的方法是使用事件,例如下面的链接的答案 https://stackoverflow.com/a/19384953/3099317