首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在可扩展标记语言中分离ControlTemplate.Triggers和ControlTemplate

如何在可扩展标记语言中分离ControlTemplate.Triggers和ControlTemplate
EN

Stack Overflow用户
提问于 2015-11-24 14:58:04
回答 1查看 508关注 0票数 1

我是WPF的新手。我需要将这段xaml代码与ControlTemplate分开。这是我的原始代码。

代码语言:javascript
复制
<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>

需要分离代码这段代码。这个代码是重复的,代码只需要定义一个。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2015-11-24 15:34:30

您可以将带有触发器的代码放入Style中,如下所示。

代码语言:javascript
复制
<Style x:Key="myButton" TargetType="Button">
    <Style.Triggers>

    </Style.Triggers>
</Style>

您可以在Template或其他按钮中使用此样式。

代码语言:javascript
复制
<Button Style="{StaticResource myButton}"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33887259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档