【问题标题】:Access MainWIndow Control from a class in a separate file从单独文件中的类访问 MainWINdow 控件
【发布时间】:2011-01-08 07:03:01
【问题描述】:

我在 XAML 的 MainWindow 中添加了一个 TextBlock。而且我需要在一个单独的类中更改 TextBlock 文本,该类位于一个单独的 .cs 文件中。我尝试了以下方法:

private static fooNameSpace.MainWindow tW1;
tW1 = this;
tW1.textBlock1.Text = "This is a paragraph";

如果该类与 MainWindow 类位于同一文件中,则它可以工作,但如果该类位于单独的文件中,则会引发空异常。我已经加了using fooNameSpace; 还是不行

我无法找出从单独的文件类引用 MainWindow 和它的 Control 的正确方法。提示任何人? 谢谢,

【问题讨论】:

    标签: wpf controls


    【解决方案1】:

    要回答我的问题 - 使用 internal 而不是 public

    // in MainWindow.xaml.cs internal
    internal static fooNameSpace.MainWindow tW1;
    
    // in foo.cs
    MainWindow.tW1.txtBlock1.Text = "This is a paragraph";
    

    internal 关键字允许其他 cs 文件中的其他类访问 MainWindow 控件。 但我不太确定使用 internal 来解决这个问题,因为它允许我的其他班级访问我的 MainWindow 中的所有其他内容......还有更好的选择吗?

    【讨论】:

      【解决方案2】:

      您提到了 XAML,所以我假设您在谈论 WPF 应用程序。 .xaml 和 .xaml.cs 文件齐头并进。如果您需要访问该“控件”中的任何内容,则需要对其进行实例化或需要在外部类中对其进行引用。

      至于错误,您声明了 tw1 但它没有被实例化 - 这就是您收到 Null 异常错误的原因。做tw1 = this 也是行不通的。

      【讨论】:

      • 是的,它是 WPF。我虽然 tW1 = this;将 tW1 实例化到 MainWindow,并允许从不同文件中的不同类访问按钮。如果不是这样,我该如何实例化或引用它?
      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多