MVVM和视图模型构造函数中视图模型属性的初始化

时间:2016-05-27 11:13:23

标签: c# wpf mvvm mvvm-light

我使用GalaSoft MvvmLight库作为项目的一部分,并在我的视图中有一个TabControl,其标签索引是通过数据绑定定义的,如下所示:

<TabControl SelectedIndex="{Binding TabIndex, Mode=TwoWay}">
...
</TabControl>

在我的视图模型中,我已经定义了TabIndex属性,如下所示:

private int _tabIndex;
public int TabIndex
{
  get { return _tabIndex; }
  set { Set(() => TabIndex, ref _tabIndex, value); }
}

现在在视图模型的构造函数中,我设置了选项卡索引的初始值,如下所示:

public MyViewModel()
{
  _tabIndex = 2;
}

这似乎工作正常,但我最近看到一些情况,看起来“SelectedIndex”的值不反映“TabIndex”的初始值。我看过日志条目,其中“TabIndex”已设置为-1,这是视图模型无法实现的,因此我唯一的解释是视图中未初始化的值已传递给视图模型。

由于我无法在本地重现这种情况,我感到有一种不安的感觉,就是我不知道会有某种形式的比赛情况发生。

所以我的问题是:是否可以通过字段在视图模型中初始化我的属性,或者我是否应该通过属性设置器设置它以触发PropertyChanged事件?

0 个答案:

没有答案