Стиль кнопки Pin Toggle - PullRequest
       11

Стиль кнопки Pin Toggle

0 голосов
/ 28 марта 2012

Привет, я хочу создать общий стиль для кнопки pin.

<Window x:Class="TooglePinButtonStyle.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
  <Window.Resources>
    <Image x:Key="pinImage"
           Width="14"
           Height="14"
           Source="/TooglePinButtonStyle;component/Images/pin.png" />
    <Image x:Key="unPinImage"
           Width="14"
           Height="14"
           Source="/TooglePinButtonStyle;component/Images/unpin.png" />

    <Style x:Key="pinButtonStyle"
           TargetType="{x:Type ToggleButton}">
      <Setter Property="Content" Value="{DynamicResource unPinImage}" />
      <Style.Triggers>
        <Trigger Property="IsChecked" Value="True">
          <Setter Property="Content" Value="{DynamicResource pinImage}" />
        </Trigger>
      </Style.Triggers>
    </Style>
  </Window.Resources>
  <StackPanel>
    <ToggleButton Height="30" 
                  Width="30"
                  Style="{StaticResource pinButtonStyle}"/>
    <ToggleButton Height="30" 
                  Width="30" 
                  Style="{StaticResource pinButtonStyle}"/>
  </StackPanel>
</Window>

Работает нормально, когда есть только одна кнопка, но когда у меня две кнопки, пользовательский интерфейс вылетает с

"Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его. "

исключение.

1 Ответ

1 голос
/ 28 марта 2012

Либо сделайте изображения не-общими , либо установите для ContentTemplate значение DataTemplate, которое содержит изображение (не ссылку на изображение), а не Content. Если у вас есть только один экземпляр элемента пользовательского интерфейса, вы столкнетесь с этой проблемой, шаблоны описывают то, что следует создавать, а не использовать экземпляры напрямую.

...