2016-05-17 80 views
2

我想要this answer工作,但我得到的錯誤The property "Style" can only be set once.。這是爲什麼?財產「風格」只能設置一次

這是我有:

<UserControl x:Class="SFVControls.Controls.Basic.BooleanRectangleView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="20" d:DesignWidth="40"> 

    <StackPanel Name="stackTextPanel" Orientation="Horizontal"> 
     <StackPanel.Style> 
      <Setter Property="Margin" Value="0,8,0,0" /> 
      <Style TargetType="{x:Type StackPanel}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False"> 
         <Setter Property="Margin" Value="0,8,0,0" /> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="True"> 
         <Setter Property="Margin" Value="0,48,0,0" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </StackPanel.Style> 
    </StackPanel> 
</UserControl> 
+2

感謝這篇文章和答案,我能夠糾正你提到的原始文章中的錯誤。 – Jaider

回答

5

你已經有了一個<StackPanel.Style>兩次直接兒:SetterMarginStyle內所屬,和Style本身。您只能將一件東西指定給<StackPanel.Style>,並且該東西必須是Style

所以只要移動Margin二傳手的Style的元素:

<StackPanel Name="stackTextPanel" Orientation="Horizontal"> 
    <StackPanel.Style> 
     <Style TargetType="{x:Type StackPanel}"> 


      <!-- Gotta be inside the Style, not outside. --> 
      <Setter Property="Margin" Value="0,8,0,0" /> 


      <Style.Triggers> 
       <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False"> 
        <Setter Property="Margin" Value="0,8,0,0" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="True"> 
        <Setter Property="Margin" Value="0,48,0,0" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
</StackPanel> 

總之,你的風格有時尚失禮