【问题标题】:Updating GUI Component from a different class C# WPF从不同的类 C# WPF 更新 GUI 组件
【发布时间】:2011-01-06 21:39:26
【问题描述】:

我正在尝试从不同的类更新一个类中的 GUI 组件 (DataGrid)。我正在使用 C# 和 WPF 表单。

当我使用标准 WF 表单时,我可以将 GUI 组件的引用作为参数传递给需要使用 DataGrid 进行工作的函数。但是,我不知道如何在 WPF 中做到这一点。

我有具有 GUI 组件的 Class1,我需要 Class3 来运行 Class2 中的函数,该函数将自动更新 Class1 中找到的 Datagrid 的 GUI 显示。

【问题讨论】:

  • 您考虑过使用数据绑定吗?它是为这类东西设计的。

标签: c# wpf


【解决方案1】:

通常在 WPF 中,您会使用WPF databinding 将网格绑定到实现“可观察”类/接口之一的对象,例如INotifyPropertyChangedObservableCollection<>。这样您就可以将数据作为对象处理,并且数据绑定将确保这些更改反映在网格中。

【讨论】:

    【解决方案2】:

    如果您还没有准备好使用数据绑定并且想以艰难的方式做事,那么您可以。您只需做与在 WinForms 中所做的相同的事情。我不确定您遇到了什么问题,但根据您的描述:

    public class Class3 {
        public void RunTheFunctionInClass2(Class1 window, Class2 class2) {
            class2.TheFunction(window.TheDatagrid);
        }
    }
    

    在 Class1.xaml 中:

    <DataGrid Name="TheDataGrid" ... />
    

    这假定 Class1 和 Class3 都在同一个程序集中——默认情况下,TheDataGrid 字段将具有 internal 可见性。

    【讨论】:

      【解决方案3】:

      我发现了如何将 WPF 数据网格作为参数传递。它与 WF 的方式相同,唯一的问题是我没有为 WPF DataGrid 导入所需的元素。

      所需的导入是

      using Microsoft.Windows.Controls
      

      使用上述导入允许访问 DataGrid,以便您可以执行以下操作

      private void myMethod(DataGrid myTable){}
      

      感谢大家的帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-06
        • 1970-01-01
        • 2019-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-14
        相关资源
        最近更新 更多