2015-11-24 3 views
1

Я новичок в WPF. Мне нужно отделить этот код xaml от ControlTemplate. Это мой оригинальный код.Как отделить ControlTemplate.Triggers от ControlTemplate в xaml

<ControlTemplate x:Key="AddImgBtnTemplate" TargetType="Button" > 
<Grid> 
    <Border Name="border" Height="25" Width="25"/> 
    <Image Name="Normal"  Source="/UILibrary;component/Themes/Default/Images/Add.png" Height="18" Width="18"/> 
    <Image Name="Pressed" Source="/UILibrary;component/Themes/Default/Images/Add.png" Opacity="0.7" Visibility="Hidden" Height="18" Width="18"/> 
    <Image Name="Disabled" Source="/UILibrary;component/Themes/Default/Images/Add.png" Opacity="0.3" Visibility="Hidden" Height="18" Width="18"/> 
</Grid> 
<ControlTemplate.Triggers> 
    <Trigger Property="IsPressed" Value="True"> 
    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/> 
    <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
    </Trigger> 
    <Trigger Property="IsEnabled" Value="False"> 
    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/> 
    <Setter TargetName="Disabled" Property="Visibility" Value="Visible"/> 
    </Trigger> 
    <Trigger Property="IsMouseOver" Value="True"> 
    <Setter TargetName="border" Property="CornerRadius" Value="3" /> 
    <Setter TargetName="border" Property="BorderThickness" Value="1" /> 
    <Setter TargetName="border" Property="BorderBrush" Value="#FF948A54" /> 
    </Trigger> 
</ControlTemplate.Triggers> 

Необходимость seprate кода этот код. Этот код является повторным кодом, необходимо определить только единицы.

<ControlTemplate.Triggers> 
    <Trigger Property="IsPressed" Value="True"> 
    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/> 
    <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
    </Trigger> 
    <Trigger Property="IsEnabled" Value="False"> 
    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/> 
    <Setter TargetName="Disabled" Property="Visibility" Value="Visible"/> 
    </Trigger> 
    <Trigger Property="IsMouseOver" Value="True"> 
    <Setter TargetName="border" Property="CornerRadius" Value="3" /> 
    <Setter TargetName="border" Property="BorderThickness" Value="1" /> 
    <Setter TargetName="border" Property="BorderBrush" Value="#FF948A54" /> 
    </Trigger> 
</ControlTemplate.Triggers> 

ответ

0

Вы можете разместить этот код с триггерами в Style, как это.

<Style x:Key="myButton" TargetType="Button"> 
    <Style.Triggers> 

    </Style.Triggers> 
</Style> 

И вы можете использовать этот стиль в кнопках Template или других.

<Button Style="{StaticResource myButton}"/> 
+0

, но свойство TargetName не может быть установлено в Style Setter. – user3094022

+0

Да, вы правы, я пропустил это. Можете ли вы объяснить причины разделения этого кода? Надеюсь, это поможет найти решение. – bars222

+0

# bars222: причины у меня есть много ControlTemplate и thire - это то же самое все ControlTemplate, поэтому нам нужно избегать повторного кода. – user3094022

Смежные вопросы