2012-06-07 77 views
1

我正在使用C#創建一個WPF接口。顯示屏顯示移動物體的當前座標。我正在做的是觸發一個間隔的線程,調用一個函數來檢查移動對象的當前位置。分配給標籤的變量

注意:檢查當前位置的函數是從其他類(在不同的.cs文件中)調用的,而且我的界面位於另一個窗口中,它是主窗口。

如何顯示窗口界面中的座標?有沒有辦法將一個類(.cs)中初始化的變量賦值給接口(.xaml)中的另一個標籤工具欄?

回答

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