Данные времени проектирования WPF в стиле подэлемента меню
У меня есть проект 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 введите для родительского меню). Как мне сказать, что элементы в этом стиле должны иметь DataContext типа DB?
1 ответ
Хорошо, после поиска в Google, я нашел ответ здесь. Кажется, это работает; единственное, что я должен добавить, - это то, что тег d: в пустом месте появляется в Intellisense при его вводе; просто введите "Style.DataContext" вручную, и он работает...