我正在使用 C# 创建 WPF 接口。显示屏显示移动物体的当前坐标。我正在做的是在一个间隔上触发一个线程,该线程调用一个检查移动对象当前位置的函数。
注意:检查当前位置的函数是从其他类(在不同的 .cs 文件中)调用的,我的界面在另一个窗口中,即主窗口。
如何在窗口界面中显示坐标?有没有办法将在一个类(.cs)中初始化的变量分配给界面(.xaml)中的另一个标签工具栏?
最简单的方法是添加几个TextBlock
s (或者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 线程而不是后台线程执行此操作。