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線程而非後臺線程執行此操作。