WPF: редактирование ContextMenu или ToolTip в Expression Blend 4: ошибка «не может иметь логического или визуального родителя». - PullRequest
1 голос
/ 28 декабря 2010

Я хочу создать новый стиль для ContextMenu или Tooltip, основываясь на их значениях по умолчанию в Expression Blend 4. Для этого я делаю следующее (пример для ContextMenu):

  1. Создание нового приложения WPF в EBlend 4.
  2. Поместить кнопку в окно.
  3. Создать новое ContextMenu для кнопки.
  4. Добавить два примера элементов в ContextMenu (с заголовком, т.е. "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>

1 Ответ

0 голосов
/ 20 октября 2011
...