我有一个带有菜单的 WPF 项目。其中一个菜单具有通过绑定到后面代码中的集合而动态生成的子项。这是此项目的 XAML:
<MenuItem Header="Open Files" Name="MiInsertOpen"
d:DataContext="{d:DesignInstance Type={x:Type core:DBInterface}}"
ItemsSource="{Binding InsertableDBs}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding DisplayName}" />
<Setter Property="ToolTip" Value="{Binding FilePath}" />
<Setter Property="Command" Value="{Binding DataContext.CmdInsert,
RelativeSource={RelativeSource FindAncestor,
AncestorType=MenuItem, AncestorLevel=2}}" />
<Setter Property="CommandParameter" Value="{Binding FilePath}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
这一切在运行时都可以正常工作,我得到了我所期望的等等。每个子项的数据上下文是它所代表的正确数据库。
然而,在设计时,父 MenuItem 正确设置了它的设计时数据上下文并识别“IsertableDBs”,但在样式中它抱怨它找不到“DisplayName”和“DBInterface”类型的其他属性(DataContext父菜单的类型)。我如何告诉它该样式中的项目应该具有 DB 类型的 DataContext?