2012-05-08 48 views
1

我在Expression Blend中創建用戶控件(按鈕)用戶控件IsPressed給任何回報

XAML:

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
x:Class="Marica.FullClient.Graphics.Node" 
x:Name="UserControl" Height="360" Width="500" Margin="40"> 

<UserControl.Resources> 
    <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="MouseOver"/> 
           <VisualState x:Name="Pressed"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.StrokeThickness)" Storyboard.TargetName="rectangle"> 
              <EasingDoubleKeyFrame KeyTime="0" Value="1"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Disabled"/> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Rectangle x:Name="rectangle" Stroke="Red" Fill="{TemplateBinding Background}"/> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsFocused" Value="True"/> 
         <Trigger Property="IsDefaulted" Value="True"/> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="StrokeThickness" TargetName="rectangle" Value="13"/> 
         </Trigger> 
         <Trigger Property="IsPressed" Value="True"> 
          <Setter Property="StrokeThickness" TargetName="rectangle" Value="13"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="False"/> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot"> 
    <Button Name="NodeButton" Style="{DynamicResource ButtonStyle1}"/> 
    <StackPanel Orientation="Vertical"> 
     <TextBlock 
     x:Name="NodeName" 
     x:FieldModifier="public" 
     Text="Property" 
     Margin="8,100,8,8" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     TextWrapping="Wrap" 
     TextAlignment="Center" 
     FontFamily="Segoe Print" 
     FontWeight="Bold" 
     Foreground="White" 
     FontSize="50"/> 

     <TextBlock 
     x:Name="CategoryName" 
     x:FieldModifier="public" 
     Text="Property" 
     Margin="8" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     TextWrapping="Wrap" 
     TextAlignment="Center" 
     FontFamily="Segoe Print" 
     FontWeight="Bold" 
     Foreground="White" 
     FontSize="25"/> 
    </StackPanel> 
</Grid> 

當我hoovered過來的控制,筆劃寬度變大,但是當我點擊,沒有任何反應。

回答

1

我希望在IsPressed上你想要做緩動動畫,而且它看起來沒有工作。好消息是,你的動畫效果很好,你只需要調整它來做你想要的東西,以便看到它實際上在工作。與KeyTime和價值

發揮例如,將其更改爲:

<EasingDoubleKeyFrame KeyTime="00:00:02" Value="30" /> 

,你會看到它開始工作/做多

+0

有沒有一種方法來保持按鈕,在狀態?因此,一旦按鈕被點擊,筆劃厚度保持爲30? – Bip

+0

好的,我解決了這個問題。我只是用複選框替換Button導致按鈕不適合控制:) – Bip

+0

對不起,剛纔看到您的評論,看起來像事情雖然工作,但祝你好運 –