【问题标题】:WPF textblock does not updateWPF 文本块不更新
【发布时间】:2014-11-21 22:20:00
【问题描述】:

我有一个 WPF 项目,因为我有多个 WPF 窗口。

在其中一个窗口中,我将其命名为 Window2 我有一个文本块,如下所示:

<TextBlock Grid.Row="0" Name="motorTitle" Text="this is test" Visibility="Visible" Foreground="Red" Grid.Column="0" FontSize="20" HorizontalAlignment="Center"></TextBlock>

在 Window2 文件后面的代码中,我有以下内容:

public string text = ".";    
    private void timer_Tick(object sender, EventArgs e)
{
    this.motorTitle.Text = text;
}

在另一个 WPF 窗口中,我将其命名为 MainWindow,我尝试通过这样做来更新 Window2 的文本

   Window2.text = "my text";

所以,当我在调试模式下运行时,我可以看到 Window2 的文本变量更改为“我的文本”,但它没有更新到显示屏上的文本块。?

我试了一下,但没有找到。

有什么想法吗?

【问题讨论】:

  • 显示创建和启动计时器的代码。另外,您是否在 timer_Tick 中设置了断点来验证它是否被调用?
  • 启动定时器的代码是这个 public DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(300); timer.Tick += timer_Tick;计时器.Start();是的,断点在“文本”中显示数据。
  • 你必须调试你的代码:定时器事件发生了吗?然后告诉Window2是什么:它是一个实例吗?你确定它是同一个实例(新手经常创建new 实例而不是使用正确显示的窗口一个)?另外,我会使用x:Name 而不是Name,不要问我why
  • 定时器事件有效。 Windows2 是在 MainWindow 中创建的一个实例
  • 我在尝试编写 motorTitle.text = text; 时看到此错误“调用线程无法访问此对象,因为另一个线程拥有它。”

标签: c# wpf


【解决方案1】:

您可能应该对 Textblock 的文本属性使用绑定并实现 INotifyPropertyChanged,如下所示:http://msdn.microsoft.com/en-us/library/ms743695%28v=vs.110%29.aspx

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多