1

我正在使用 C# 创建 WPF 接口。显示屏显示移动物体的当前坐标。我正在做的是在一个间隔上触发一个线程,该线程调用一个检查移动对象当前位置的函数。

注意:检查当前位置的函数是从其他类(在不同的 .cs 文件中)调用的,我的界面在另一个窗口中,即主窗口。

如何在窗口界面中显示坐标?有没有办法将在一个类(.cs)中初始化的变量分配给界面(.xaml)中的另一个标签工具栏?

4

1 回答 1

0

最简单的方法是添加几个TextBlocks (或者TextBox如果您愿意)并将它们绑定到视图模型上的属性:

<TextBlock Text="{Binding Path=XCord}" />

诀窍在于,由于您使用的是计时器或后台线程,因此您必须同步属性更改通知,以便它们发生在您的 UI 线程上。所以你可以实现如下XCord属性:

    public string XCoord
    {
        get { return _xcoord; }
        set
        {
            if(!Application.Current.Dispatcher.CheckAccess())
            {
                Application.Current.Dispatcher
                    .BeginInvoke(new Action(() =>
                                            {
                                                _xcoord = value;
                                                NotifyPropertyChanged("XCoord");
                                            }));
            }
            else
            {
                _xcoord = value;
                NotifyPropertyChanged("XCoord");
            }
        }
    }

此检查Dispatcher用于确保您没有尝试从错误的线程设置属性,如果是,它用于BeginInvoke在 UI 线程上完成工作。这样,当PropertyChanged事件触发时,绑定会尝试读取值并更改 UI,它会从 UI 线程而不是后台线程执行此操作。

于 2012-06-07T19:27:17.270 回答