如何处理的ObservableCollection<gt;在MVVM一个并行任务结果

 我来答
旅勇酱2143
2017-05-28 · TA获得超过342个赞
知道答主
回答量:365
采纳率:0%
帮助的人:88.5万
展开全部

ViewModel 类中我们可以做许多的事情,可以给页面绑定的某个字段初始值,也可以初始绑定的事件等操作。如下所示:

public class 要用的ViewModel: ViewModelBase

{

private TestContext _testContext;

/// <summary>

/// Initializes a new instance of the 要用的ViewModel class.

/// </summary>

public 要用的ViewModel ()

{

if (!IsInDesignMode) // 不是在使用Blend设计的模式下

{

_ testContext = new TestContext();   // 使用的RIAService

BindCommand(); // 绑定 事件  (用于初始化事件的)

BindData();  // 绑定数据 (用于初始化数据的 )

}

// 属性

// 事件

// 方法

}

  1. 属性

  2. l  在View 段要绑定某个字段或集合,在MVVMLight中通常的做法是绑定属性,在ViewModel中,属性是比较容易操作的,定义一个属性,然后进行一下简单的处理,如判断是否为空,是否相等(如果相等则不用进行值便通知等),在View中只要绑定一下就可以了。

  3. // public class要用的ViewModel

  4. private UserInfo  _userInfoModel;

  5. /// <summary>

  6. /// Test

  7. /// </summary>

  8. public UserInfo UserInfoModel  // 集合 ObservableCollection<UserInfoModel > UserInfoModels

  9. {

  10. get

  11. {

  12. return _ userInfoModel;

  13. }

  14. set

  15. {

  16. if (_userInfoModel == value)

  17. {

  18. return;

  19. }

  20. _ userInfoModel = value;

  21. RaisePropertyChanged(“UserInfoModel”);

  22. }

  23. }

  24. l  在许多的MVVMLight介绍中,通常的绑定都是放在App.xmal中进行资源的绑定,既然可以抽出来了,那么自然的也可以绑定到相应的页面中,绑定的方法挺多的,可以合理的选择自己喜欢的。

  25. 如果在页面中直接用,首先要做的事情就是命名空间的引入,我们一定要将ViewModel引入到我们的页面中,和正常引入类是一样的 :

  26. xmlns:vm="clr-namespace:项目.命名空间A.命名空间B;assembly=项目.命名空间A"

  27. 然后我们就要设定当前页的资源,

  28. <navigation:Page.Resources>

  29. <vm:要用的ViewModel  x:"vmTest"/>

  30. </navigation:Page.Resources>

  31. 很好,这样我们就将ViewModel引入到了该页面中,同时我们可以通过Key “vmTest” 来进行绑定了,如果单个的字段,则可以通过简单的绑定来实现,如:

  32. <TextBlock  Text={Binding  UserInfoModel .UserName, Source={StaticResourcevmTest}}/>

  33. 如果要绑定的是集合则 如下面的所示:

  34. <ComboBox  Margin="0,0,10,0" Grid.Row="0"  Grid.Column="1" Height="20"ItemsSource="{Binding UserInfoModels ,Source={StaticResource pnvm}}" SelectedItem="{Binding UserInfoModel ,Source={StaticResource pnvm},Mode=TwoWay}">

  35. <ItemsControl.ItemTemplate>

  36. <DataTemplate>

  37. <ComboBoxItemContent="{Binding UserName}" ></ComboBoxItem>

  38. </DataTemplate>

  39. </ItemsControl.ItemTemplate>

  40. </ComboBox>

  41. 从这里面就可看出 :在操作集合的时候,使用的是ObservableCollection ,可以值变通知的,对于绑定的集合来说,我们要的目的通常是现实或者从集合中选择某条,因此我们设置一个用于获取集合中选则的项。如果是DataGrid等,虽然没有选中也可以采用类似的方法进行接收。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式