2017-12-19 8 views
0

ボタンを押したときに沈んだ効果を持つようにXAMLでプロパティを設定しようとしています。私は境界線の太さを増やしてこれを行います。 特定の値を割り当てることができないというエラーが表示されます。私はここで何を間違えているのですか?XAMLで沈んだ効果を設定する

注:DropShadowEffectを使用しようとしましたが、動作しますが、境界効果は機能しません。

<Style x:Key="DefaultLanguageButtonStyle" TargetType="{x:Type Button}" > <!--BasedOn="{StaticResource DefaultButton}" >--> 
       <Setter Property="OverridesDefaultStyle" Value="True" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Button}"> 
          <Border x:Name="border" BorderThickness="0" BorderBrush="DarkGray" Background="{TemplateBinding Background}"> 
           <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter TargetName="border" Property="BorderBrush" Value="Black" /> 
           </Trigger> 

           <Trigger Property="IsPressed" Value="True"> 
            <Setter Property="Effect"> 
             <Setter.Value> 
              <Border BorderThickness="5,5,0,0" > 

              </Border> 
             </Setter.Value> 
            </Setter> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="FontSize" Value="30" /> 
       <Setter Property="FontWeight" Value="Bold" /> 
       <Setter Property="HorizontalAlignment" Value="Center" /> 
       <Setter Property="VerticalAlignment" Value="Center" /> 
       <Setter Property="HorizontalContentAlignment" Value="Center" /> 
       <Setter Property="VerticalContentAlignment" Value="Center" /> 
       <Setter Property="Foreground" Value="{DynamicResource RedBrush}" /> 
       <Setter Property="Background" Value="{DynamicResource WhiteBrush}" /> 
       <Setter Property="BorderThickness" Value="{DynamicResource NoBorder}" /> 
       <Setter Property="Height" Value="100" /> 
      </Style> 
+0

境界の 'Effect'プロパティを設定することを意味しますか?おそらく、あなたのセッターに 'TargetName'属性がありません。 – Jack

+0

はい効果を設定する必要があります –

+0

[この質問はあなたの問題とよく似ています](https://stackoverflow.com/questions/1749882/how-can-i-set-a-property-of-a-dropshadoweffect-via -a-trigger-in-a-controltemplat) – Jack

答えて

3

は、なぜこのようなあなたのトリガーを持っていない:ここで

は私のXAMLで

<Trigger Property="IsPressed" Value="True"> 
    <Setter TargetName="border" Property="BorderThickness" Value="5,5,0,0"/> 
    <Setter TargetName="border" Property="Effect" Value="..."/> 
</Trigger> 

編集:私はBorderThicknessのを変更するのはここ

が短い例です。 a Border内のControlTemplateからTriggers

<Button> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 

      <Border x:Name="Border" BorderBrush="HotPink" BorderThickness="0" Background="Aqua" Width="50" Height="50"/> 

      <ControlTemplate.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter TargetName="Border" Property="BorderThickness" Value="20"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 

     </ControlTemplate> 
    </Button.Template> 
</Button> 

enter image description hereenter image description here

これらの画像に粗悪割合すみません。

+0

効果はどうですか? –

+0

'Effect'を設定して、' BorderThickness'を変更しようとしているのであれば、両方を別々のセッターに入れてください。 – Jack

+0

あなたのコードではBorderThicknessを設定することさえできません –

3

資源でスタイルを定義します。

<Style TargetType="Button" x:Key="SunkenEffectStyle"> 
<Style.Triggers> 
    <EventTrigger RoutedEvent="Button.Click"> 
    <EventTrigger.Actions> 
     <BeginStoryboard> 
     <Storyboard> 
      <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="BorderThickness" BeginTime="00:00:00"> 
       <SplineThicknessKeyFrame KeyTime="00:00:01" Value="10,10,0,0" /> 
       <SplineThicknessKeyFrame KeyTime="00:00:03" Value="0,0,0,0" /> 
      </ThicknessAnimationUsingKeyFrames> 
     </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger.Actions> 
    </EventTrigger> 
</Style.Triggers> 
</Style> 

用途:

<Button Content="Click Me" Style="{StaticResource SunkenEffectStyle}" 
     Height="50" Width="100"/> 

を、この答えは、あなたの前の質問here

をカバーして、私はあなたがするアニメーションを望んでいたので、ここでキーフレームを使用していました開始時は速く、戻っている間は遅くなります

Sunken Effect

関連する問題