我有一个Windows窗体应用程序,窗体上的一个控件是WPF用户控件。 我已将元素主机控件放在Windows窗体上,这是在启动时加载我的用户控件。
我想要的是在特定时间加载和刷新用户控件。因为我需要加载新数据。
我尝试了elementHost1.Refresh();
,但这没有做任何事情。
如何加载和刷新?
这是我对此LINK
的用户控件答案 0 :(得分:2)
让数据提供者重新阅读其来源:
var dataprovider = (System.Windows.Data.XmlDataProvider) (
((UserControl1) (elementHost1.Child)).Resources ["rssData"]
);
dataprovider.Refresh ();
答案 1 :(得分:0)
再次致电您的加载事件会发生什么?
或者至少使用以>
形式填充数据的方法即。要么调用你的this.Load(null,null)
(或根据需要传递一些对象或事件)
private void form1_load(object o, EventArgs e)
{
BindDataToControlMethod();
}
或重构您的代码,以便您可以调用BindDataToControlMethod()
方法。
您正在进行的elementHost1.Refresh()
通话会重新绘制屏幕上的表单。它本身不会重新加载。
答案 2 :(得分:0)
MVVM
和INotifyPropertyChanged
怎么样?
使用INotifyPropertyChanged
,您可以在数据更改时通知View并以这种方式刷新它。看起来这就是你想要的。
查看几个相关链接:
答案 3 :(得分: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";
编辑:错误纠正。