2010-12-28 1 views
1

Я хочу, чтобы создать новый стиль для ContextMenu или подсказка на основе это по умолчанию в Expression Blend 4. Для этого я делаю следующее (пример для ContextMenu):WPF: Редактирование ContextMenu или ToolTip в Expression Blend 4: ошибка «не может иметь логического или визуального родителя».

  1. Создать новое приложение WPF в EBlend 4.
  2. Положите кнопку на окне.
  3. Создать кнопку ContextMenu для кнопки.
  4. Добавьте два примера в ContextMenu (с заголовком i.e. «item1» и «item2»).
  5. В панели «Свойства» в свойствах свойств ContextMenu в свойствах «Стиль» щелкните по квадрату в правой части свойства «Стиль» и выберите «Преобразовать в новый ресурс ...».
  6. В открывшемся окне «Создать стиль ресурса» выберите «определено в» для «Этот документ [Окно: Окно]» или новый словарь ресурсов - это не имеет значения.
  7. Я получаю XAML для стиля ContextMenu по умолчанию, как это в нижней части моего сообщения.
  8. Я хочу отредактировать этот стиль с предварительным просмотром, поэтому перейдите на вкладку «Ресурсы», найдите свой «ContextMenuStyle1», щелкните правой кнопкой мыши и выберите «Изменить».
  9. Я не могу отредактировать стиль, у вас есть информация о том, что было исключено исключение «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> 

ответ