我有以下场景......我有一个包含 ItemsControl 的窗口。我为 Window 的 DataContext 指定了一个 ViewModel。我为 ItemControl 的 ItemTemplate 指定了一个 DataTemplate。在 DataTemplate 中,我使用 ComboBox,对于 ComboBox 的 ItemsSource,我使用 RelativeSource 绑定到其包含的 Window 的 DataContext。在运行时一切正常并且绑定被正确解析,但在设计时苹果酒无法获取 ItemSource 绑定到的包含窗口的 ViewModel。
这是我的代码(我在顶部省略了 xml 命名空间声明,但在我的代码中它们包含在内):
<Window d:DataContext="{Binding Source={StaticResource DesignViewModel}}">
<Window.Resources>
<designviewmodels:GenresEditorDesignViewModel x:Key="DesignViewModel" />
</Window.Resources>
<ItemsControl Grid.Row="0" Margin="3" ItemsSource="{Binding Path=CurrentState}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid DataContext="{Binding}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" Margin="3,0,3,0"
ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}}, Path=DataContext.AvailableGenres,
Mode=OneWay}"
DisplayMemberPath="Name"
SelectedItem="{Binding Path=Genre, Mode=TwoWay}" DataContext="
{Binding}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
所以基本上从上面的代码中 Path=DataContext.AvailableGenres 在设计时无法解析,但在运行时它被正确解析。
有谁知道我做错了什么,或者是 Wpf xaml 解析器的问题,它在设计时无法解析到 RelativeSources 的绑定?