为什么当我为我的 MVVM 视图创建一些设计时数据时,我必须嵌套 xmlns 两次才能访问该属性的属性?
例子:
<d:DesignProperties.DataContext>
<local:UserListViewModel>
<local:UserListViewModel.Users xmlns:local="clr-namespace:ChatModule.ViewModels">
<local:User Name="Person 1" />
<local:User Name="Person 2" />
<local:User Name="Person 3" />
<local:User Name="Person 4" />
<local:User Name="Person 5" />
<local:User Name="Person 6" />
</local:UserListViewModel.Users>
</local:UserListViewModel>
</d:DesignProperties.DataContext>
我已经在 UserControl 的 xmlns 中定义了一个本地属性。但是要访问底层类中的 User 结构,我必须在 Users 属性中再次定义它。
这是为什么?
所有这一切都很好......我可以看到我的运行时数据非常棒。我以前从来没有这样做过,所以能够看到它很整洁。我注意到当我编译时我经常得到错误消失......但每当我更改 xaml 时都会再次出现。
The property 'Name' was not found in type 'User'.
The property 'Name' was not found in type 'User'.
The property 'Name' was not found in type 'User'.
The property 'Name' was not found in type 'User'.
The property 'Name' was not found in type 'User'.
The property 'Name' was not found in type 'User'.
显然它有效,否则我将无法看到运行时数据。
我还想将此设计时数据提取到另一个 xaml 类中,并在此类中引用它,因此我没有位于视图本身内的实际设计时数据……只是对另一个 xaml 文件的引用。
所以我这样做了......就像这样......
<UserListViewModel xmlns="clr-namespace:ChatModule.ViewModels">
<UserListViewModel.Users xmlns:local="clr-namespace:ChatModule.ViewModels">
<local:User Name="Person 1" />
<local:User Name="Person 2" />
<local:User Name="Person 3" />
<local:User Name="Person 4" />
<local:User Name="Person 5" />
<local:User Name="Person 6" />
</UserListViewModel.Users>
</UserListViewModel>
但是,当我摆脱代码隐藏时,我得到了上面提到的相同错误(在构建中消失),但还有一个错误说
Cannot set properties on propety elements. Line 2 Position 6.
与其他错误不同,这不允许我构建。为什么是这样?我如何解决它?我仍然习惯这种设计时数据的东西。