2012-01-11 90 views
1

我有一個類視圖模型(使用棱鏡)。它有一個關聯的XAML視圖。當我做更改光標在代碼後面

this.Cursor 

沒有任何Cursor屬性可用。我必須做什麼才能訪問光標,以便我可以更改它的圖標?

+1

'this'的類型是什麼? – 2012-01-11 17:56:44

回答

4

由於Cursor是與UI相關的屬性,因此應該將該遊標設置在視圖中,而不是ViewModel中。 this.Cursor應該正常工作從代碼隱藏查看

如果您Cursor是基於什麼東西在ViewModel比如,如果它的加載數據,然後使用DataTrigger在XAML來改變光標的時候像一個IsLoading屬性設置爲true

<Style TargetType="{x:Type Window}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsLoading}" Value="True"> 
      <Setter Property="Cursor" Value="Wait" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+0

我需要使用特定方法完成工作時更改光標。我沒有IsLoading這樣的財產。我想在這個方法的開始處設置光標並在最後改回。有沒有其他的方法?此外,這是如何工作,因爲它全部在主線上? – 4thSpace 2012-01-11 18:11:20

+0

@ 4thSpace如果你的方法在'ViewModel'中,那麼在ViewModel上創建一個'IsLoading'屬性並使用'DataTrigger'是個好主意。 ViewModels不應該關心用戶界面,並且包括遊標。 – Rachel 2012-01-11 18:18:08

+0

@ 4thSpace我不確定你爲什麼關心線程。這可能是唯一一個問題,如果你正在後臺線程上進行處理。然後,您必須記住在開始處理之前或使用「Dispatcher」來執行在主線程上更新IsLoading屬性的操作。 – Rachel 2012-01-11 18:19:44