Pin切换按钮样式

时间:2012-03-28 10:24:06

标签: wpf xaml togglebutton

您好我想为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>

当只有一个按钮时它工作正常,但当我有两个按钮时,UI崩溃

  

“指定的元素已经是另一个元素的逻辑子元素。   首先断开它。“

异常。

1 个答案:

答案 0 :(得分:1)

制作图像non-shared,或将ContentTemplate设置为包含图像(不是对图像的引用)的某些DataTemplate,而不是Content。如果您只有一个UI元素实例,则会遇到此问题,模板会描述应该创建的内容而不是直接使用实例。