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

本文关键字:刷新 用户 控件 加载 单击 按钮 | 更新日期: 2023-09-27 18:35:30

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

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

我已经尝试过elementHost1.Refresh();但这没有任何作用。

如何加载和刷新它?

这是我在此链接上的用户控件

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

使数据提供程序重新读取其源:

var dataprovider = (System.Windows.Data.XmlDataProvider) (
  ((UserControl1) (elementHost1.Child)).Resources ["rssData"]
);
dataprovider.Refresh ();

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

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

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

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

或者重构代码,以便可以调用BindDataToControlMethod()方法。

您正在进行的elementHost1.Refresh()调用只是在屏幕上重新绘制表单。它本身不会重新加载。

MVVMINotifyPropertyChanged呢?使用INotifyPropertyChanged,您可以在数据发生更改时通知 View,并以这种方式刷新数据。似乎这就是你想要的。


看看几个相关的链接:

  • INotifyPropertyChanged WPF
  • WPF/MVVM 快速入门教程

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

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

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

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

或者您访问 WPF 控件,如下所示

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

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

wpfButton.Content = "My new text";

编辑:纠正错误。