Я пытаюсь создать собственный стиль для кисти со стеклянным видом. У меня это выглядит так, как я этого хочу, но я не могу заставить поведение Pressed работать.Смена кистей в VisualStateManager
Превосходный внешний вид выглядит просто обычным образом, когда одна из кистей перевернута. Я установил обе кисти в качестве ресурсов и попробовал ObjectAnimationUsingKeyFrames
, но, похоже, это не так. Идея что-то вдоль линий этого:
<VisualState x:Name="Pressed">
<Storyboard>
<!-- swap the brush from {StaticResource ButtonGlassBrushNormal} to
{StaticResource ButtonGlassBrushPressed -->
</Storyboard>
</VisualState>
Вот мои ресурсы и стиль:
<LinearGradientBrush x:Key="ButtonGlassBrushNormal" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#00000000" Offset="0.31"/>
<GradientStop Color="White"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ButtonGlassBrushPressed" EndPoint="0.5,0" StartPoint="0.5,1">
<GradientStop Color="White"/>
<GradientStop Color="#00000000" Offset="0.31"/>
</LinearGradientBrush>
<ControlTemplate x:Key="ButtonControlTemplate1" TargetType="{x:Type Button}">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="_glassBorder"
Storyboard.TargetProperty="Background"
Duration="0:0:1"
RepeatBehavior="Forever">
<ObjectAnimationUsingKeyFrames.KeyFrames>
<DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{StaticResource ButtonGlassBrushPressed}" />
</ObjectAnimationUsingKeyFrames.KeyFrames>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" VerticalAlignment="Top" Margin="0,0,0,-21.167" CornerRadius="5">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FF803A3A" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Border BorderThickness="1" CornerRadius="5" x:Name="_glassBorder" Background="{StaticResource ButtonGlassBrushNormal}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Border>
</Grid>
</ControlTemplate>
Я предполагаю, что это будет голова slappingly простой, но то, что я здесь делаю неправильно ?
Это была продолжительность и нулевое ключевое время. Благодаря! –