1

我有一个 Windows 窗体应用程序,窗体上的控件之一是 WPF 用户控件。我已将元素主机控件放在 Windows 窗体上,这是在启动时加载我的用户控件。

我想要的是在特定时间加载和刷新用户控件。因为我需要加载新数据。

我已经尝试过elementHost1.Refresh();了,但这并没有做任何事情。

如何加载和刷新它?

这是我在此LINK上的用户控件

4

4 回答 4

2

让数据提供者重新读取其来源:

var dataprovider = (System.Windows.Data.XmlDataProvider) (
  ((UserControl1) (elementHost1.Child)).Resources ["rssData"]
);
dataprovider.Refresh ();
于 2012-05-31T22:07:24.530 回答
0

What about MVVM and INotifyPropertyChanged? Using INotifyPropertyChanged you can notify View when data has been changed and refresh it in this way. Seems like this is what you want.


Take a look into couple related links:

于 2012-05-31T21:27:24.543 回答
0

由于您的控件不会自动刷新,我假设您不使用数据绑定,这可能是最好的解决方案。

假设您有一个(自定义)类型 UserControl1 的用户控件,它承载一个名为 MyButton 的按钮。

您可以创建一个新的 WPF 控件并将其分配给子元素,例如

((UserControl1) (elementHost1.Child)).MyButton = new System.Windows.Button ()

或者您按如下方式访问 WPF 控件

var wpfButton = ((UserControl1) (elementHost1.Child)).MyButton;

然后简单地重置 WPF 控件的必要属性:

wpfButton.Content = "My new text";

编辑:错误更正。

于 2012-05-31T21:38:52.183 回答
0

当你再次调用你的加载事件时会发生什么?

或者至少是您用来在表单中填充数据的方法>

即要么调用你的this.Load(null,null)(或根据需要传递一些对象或事件)

private void form1_load(object o, EventArgs e)
{
    BindDataToControlMethod();
}

或者重构你的代码,这样你就可以调用你的BindDataToControlMethod()方法。

elementHost1.Refresh()您正在拨打的电话只是在屏幕上重新绘制表单。它本身不会重新加载。

于 2012-05-30T19:55:13.167 回答