我使用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事件?