如何在按钮单击时加载和刷新用户控件

时间:2012-05-28 18:29:13

标签: c# wpf user-controls load refresh

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

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

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

如何加载和刷新?

这是我对此LINK

的用户控件

4 个答案:

答案 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)

MVVMINotifyPropertyChanged怎么样? 使用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";

编辑:错误纠正。