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