我觉得我的观点没有被更新,因为NotifyPropertyChanged事件是在构建UI之前触发但我不知道如何克服这个。
我不是真的发布分析代码,因为我知道数据绑定工作。它们只是在构建页面时失败。
我严格发布它,这样你就可以了解我在说什么。
public Obj1 SelectedObj1
{
get { return _SelectedObj1; }
set { _SelectedObj1 = value; NotifyPropertyChanged("SelectedObj1"); }
}
public Obj2 SelectedObj2
{
get { return _SelectedObj2; }
set { _SelectedObj2= value; NotifyPropertyChanged("SelectedObj2"); }
}
public Obj3 SelectedObj3
{
get { return _SelectedObj3; }
set { _SelectedObj3 = value; NotifyPropertyChanged("SelectedObj3"); }
}
在我的构造函数中
public constructor(){
BuildFakeData();
SelectedObj1 = observableCollection[0];
SelectedObj2 = SelectedObj1.obj2s.Count > 0 ? SelectedObj1.obj2s[0] : null;
SelectedObj3 = SelectedObj2.obj3s.Count > 0 ? SelectedObj2.obj3s[0] : null;
}
我的问题是,当你在做MVVM时,如果你在构造函数中设置绑定属性,比如说选择了一个DataGrid的Row,它会填充还是失败,因为XAML还没有构建?
这是在视图中创建datacontext的地方
<Window.Resources>
<vm:ViewModel x:Key="viewModel"/>
</Window.Resources>
<Grid
DataContext="{StaticResource viewModel}">
这是我为网格设置所选项目的地方
<igWPF:XamDataGrid
ActiveDataItem="{Binding SelectedObj1}"
DataSource="{Binding observableCollection}"
答案 0 :(得分:0)
如果您的视图在创建视图模型时尚不存在,那么当您的属性更新时,视图仍未监听。但是,当创建视图并将视图模型指定为其数据上下文时,视图将自动从视图模型(其数据上下文)加载值。
因此,INPC根本不是一个问题。您可以在示例中创建没有INPC的属性并使其工作(因为值已在构造函数中设置)。