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