【发布时间】:2019-07-25 23:32:47
【问题描述】:
我正在 WPF 中构建一个界面。我的 MainWindow 类可以访问我在窗口中创建的 TextBlock。它可以通过调用 textblock.text 方法将文本写入此 TextBlock。
然后我创建了第二个类,它在程序启动时立即实例化。这个类有一个我创建的方法,它看不到那个文本块。我如何才能访问在 MainWindow 中可访问的 .text 方法?
谢谢
MainWindow.xaml.cs
{
ButtonFunctions buttonFunctions = new ButtonFunctions();
public MainWindow()
{
InitializeComponent();
ProgressBar ProgBar = new ProgressBar();
}
//this works
textBlock.Text = "r";
ButtonFunctions.cs
{
public ButtonFunctions()
{
}
public void Addtext(string t)
{
//this doesn't work
textBlock.Text += t;
//this doesnt work either
MainWindow.textBlock.Text="r";
}
如果我尝试调用 MainWindow 方法,我会收到以下错误。 非静态字段、方法或属性“MainWindow.textBlock.Text”需要对象引用 这种情况下需要什么对象引用?
【问题讨论】:
-
你应该添加
WPF标签 -
也许你可以将 textBlock 从 MainWindow 传递给 Addtext 方法,然后你可以在那个范围内使用它。
-
根本问题是您试图在不提供对象引用的情况下访问非静态成员。当您在 Stack Overflow 中搜索错误消息时,您应该找到的详细信息请参见标记的重复项。也就是说,这是因为您的代码存在更广泛的问题:您正在直接操作 UI 对象的属性,而不是像 WPF 设计使用的那样使用 MVVM。然后,通过假设只有一个
MainWindow对象并允许随机代码直接修改文本,您可以按照您在下面发布的答案中的描述来复合这个设计问题。