Установка значения свойства Icon для MenuItem с использованием стиля в XAML как Shapes.Path - PullRequest
1 голос
/ 08 августа 2011

Я использую Silverlight 4 и Expression Blend 4.

Я оформляю элемент MenuItem с путем как Icon.

<Style x:Key="1234" TargetType="Controls:MenuItem">
        <Setter Property="Header" Value="Cancel" />
        <Setter Property="Icon">
            <Setter.Value>
                <Path Fill="#FF2B2B2B"
                      Width="14.3775"
                      Height="14"
                      Canvas.Left="0.311264"
                      Canvas.Top="0.500005"
                      Stretch="Fill"
                      Data="F1 M 111.2,-85.6L 124.2,-85.6L 124.2,-72.6L 111.2,-72.6L 111.2,-85.6 Z M 117.791,-82.3439L 117.791,-80.4506L 112.685,-80.4506L 112.685,-77.8084L 117.791,-77.8084L 117.791,-75.8748L 121.025,-79.1094L 117.791,-82.3439 Z M 121.657,-84.0222L 121.657,-74.0222L 122.657,-74.0222L 122.657,-84.0222L 121.657,-84.0222 Z " />
            </Setter.Value>
        </Setter>
    </Style>

Но при попытке открыть это дает смесь исключений.

Сообщение об исключении: ошибка HRESULT E_FAIL была возвращена после вызова компонента COM в MS.Internal.XcpImports.MethodEx (IntPtr ptr, имя строки, CValue [] cdData)

Это также дает исключение во время выполнения, когда я добавляю этот стиль к элементу ContextMenu.

1 Ответ

4 голосов
/ 19 сентября 2011

Поместите стиль в шаблон управления:

<ControlTemplate x:Key="CancelIcon">
      <Canvas>
        <Path Fill="#FF2B2B2B"
                          Width="14.3775"
                          Height="14"
                          Canvas.Left="0.311264"
                          Canvas.Top="0.500005"
                          Stretch="Fill"
                          Data="F1 M 111.2,-85.6L 124.2,-85.6L 124.2,-72.6L 111.2,-72.6L 111.2,-85.6 Z M 117.791,-82.3439L 117.791,-80.4506L 112.685,-80.4506L 112.685,-77.8084L 117.791,-77.8084L 117.791,-75.8748L 121.025,-79.1094L 117.791,-82.3439 Z M 121.657,-84.0222L 121.657,-74.0222L 122.657,-74.0222L 122.657,-84.0222L 121.657,-84.0222 Z " />
      </Canvas>
    </ControlTemplate>

Тогда для меню попробуйте следующее

<MenuItem Header="Cancel" >
  <MenuItem.Icon>
    <ContentControl Template="{StaticResource CancelIcon}" />
  </MenuItem.Icon>
</MenuItem>

Надеюсь, это сработает: -)

...