2012-01-11 94 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