我有一个具有 InternalViewModel 类型属性的 ViewModel,该属性又具有 Collection 属性。
鉴于视图的 DataContext 是 ViewModel 的一个实例,绑定内部集合需要以下语法:
{Binding InternalViewModelProperty.Collection}
在运行时,它按预期工作。但是,如果我使用 DesignInstance 作为代理来表示我的 ViewModel 对象,则在设计时它根本看不到集合(例如,没有自动生成的列)。
如果我作弊并将 Collection 属性公开为 ViewModel 属性并将绑定更改为:
{Binding Collection}
然后它在设计时再次工作。
嵌套在属于 ViewModel 的另一个属性中作为属性的集合在设计时的行为是否不同?这是 DesignInstance 的限制吗?
这是 XAML 代码:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:LocalNS"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
mc:Ignorable="d"
x:Class="MyUserControl"
d:DataContext="{d:DesignInstance Type=local:MyViewModel}"
>
<Grid>
<DataGrid ItemsSource="{Binding InternalViewModelProperty.Collection}"/>
</Grid>
</UserControl>