Я хочу создать новый стиль для ContextMenu или Tooltip, основываясь на их значениях по умолчанию в Expression Blend 4. Для этого я делаю следующее (пример для ContextMenu):
- Создание нового приложения WPF в EBlend 4.
- Поместить кнопку в окно.
- Создать новое ContextMenu для кнопки.
- Добавить два примера элементов в ContextMenu (с заголовком, т.е. "item1" и "item2").
- На панели «Свойства» в кнопках Свойства свойства ContextMenu в свойстве «Стиль» щелкните квадрат справа от свойства «Стиль» и выберите «Преобразовать в новый ресурс ...».
- В открывшемся окне «Создать ресурс стиля» выберите «определенный в» для «Этот документ [Окно: Окно]» или новый словарь ресурсов - это не имеет значения.
- Я получаю XAML для стиля по умолчанию ContextMenu, как это в нижней части моего сообщения.
- Я хочу отредактировать этот стиль с помощью предварительного просмотра, поэтому я перехожу на вкладку «Ресурсы», нахожу свой «ContextMenuStyle1», щелкаю правой кнопкой мыши и выбираю «Редактировать».
- Я не могу отредактировать стиль, есть информация о том, что было сгенерировано исключение: «ContextMenu не может иметь логического или визуального родителя».
Кроме того, я не могу также добавить в свой словарь ресурсов другие новые стили, потому что он говорит: «Ресурс не может быть добавлен в« ResourceDictionary1.xaml », так как« ResourceDictionary1.xaml »содержит ошибки, которые препятствуют его обновлению». пока я не закрою представление ResourceDictionary1.xaml и снова открою его.
Кто-нибудь может решить проблему и дать решение о том, как редактировать стиль ContextMenu или ToolTip в Expression Blend 4 с визуальным предварительным просмотром изменений и доступом ко всем его свойствам и функциям?
<Style x:Key="ContextMenuStyle1" TargetType="{x:Type ContextMenu}">
<Setter Property="Background" Value="{DynamicResource MenuBackgroundBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{DynamicResource WindowBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border Uid="Border_93">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.DropShadowKey}}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Padding" Value="0,0,5,5"/>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="4" Opacity="0.8" ShadowDepth="1"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Uid="Border_50">
<ScrollViewer CanContentScroll="True" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}" Uid="ScrollViewer_9">
<ItemsPresenter KeyboardNavigation.DirectionalNavigation="Cycle" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Uid="ItemsPresenter_5"/>
</ScrollViewer>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>