如何在单击按钮时加载和刷新用户控件
本文关键字:刷新 用户 控件 加载 单击 按钮 | 更新日期: 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()
调用只是在屏幕上重新绘制表单。它本身不会重新加载。
MVVM
和INotifyPropertyChanged
呢?使用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";
编辑:纠正错误。