2016-08-26 9 views
1

カーソルがオンのときにボタンの太さを変更したいと思います。私はこのコードを使用してそれをしようとしました:XAMLでBorderThicknessのIsMouseOverトリガーが機能しない

<Button BorderThickness="1" Content="Düzenle" Height="20" Width="50" Foreground="Blue"> 
<Button.Style> 
    <Style TargetType="Button"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="BorderThickness" Value="4"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Button.Style> 
</Button> 

しかし、このコードは変更をトリガするために動作していません。この問題を解決する方法は何ですか?

<Trigger Property="IsMouseOver" Value="true"> 
    ... 
    <Setter Property="BorderThickness" TargetName="border" Value="5"/> 
</Trigger> 

enter image description here

答えて

1

それは私がデフォルトButton 1を使用してスタイルを作成し、ブレンドしてその行を追加し、「フォーカスのスタイルは」それと干渉している、

少し微妙です

完全なコード

<Window x:Class="WpfApplication4.MainWindow" 
     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" 
     xmlns:local="clr-namespace:WpfApplication4" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style x:Key="FocusVisual"> 
      <Setter Property="Control.Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     <SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/> 
     <SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/> 
     <SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/> 
     <SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/> 
     <SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/> 
     <SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/> 
     <SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/> 
     <SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/> 
     <SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/> 
     <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> 
      <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> 
      <Setter Property="Background" Value="{StaticResource Button.Static.Background}"/> 
      <Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="HorizontalContentAlignment" Value="Center"/> 
      <Setter Property="VerticalContentAlignment" Value="Center"/> 
      <Setter Property="Padding" Value="1"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> 
          <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsDefaulted" Value="true"> 
           <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
          </Trigger> 
          <Trigger Property="IsMouseOver" Value="true"> 
           <Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/> 
           <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/> 
           <Setter Property="BorderThickness" TargetName="border" Value="5"/> 
          </Trigger> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/> 
           <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/> 
           <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/> 
           <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <Button x:Name="button" Content="Button" Margin="100" Style="{DynamicResource ButtonStyle1}"/> 
    </Grid> 
</Window> 

それはおそらくあなたがResourceDictionaryにそれを置くだろうと良いでしょうので、あなたは、これらすべてのリソース、スタイルだけでなく、必要に注意してください;)

は、この完全なチュートリアルを参照してください:

https://blogs.msdn.microsoft.com/wpfsldesigner/2010/06/03/creating-and-consuming-resource-dictionaries-in-wpf-and-silverlight/

関連する問題