0

我有一个带有菜单的 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?

4

1 回答 1

0

好吧,在谷歌搜索了一些之后,我在这里找到了答案。这似乎有效;我唯一要补充的是 d: 输入时 Intellisense 中的标签为空;只需手动输入“Style.DataContext”就可以了……

于 2019-02-12T21:39:16.867 回答