2011-10-09 11 views
1

ボタンには2つのスタイルがあります。最初のものは通常の状態用で、2番目のものはmouseOver状態用です。マウスが入ったときにボタンのスタイルを変更するにはどうすればいいですか? Blendでは、ストーリーボードを作成してスタイルを変更しようとしましたが、何も起こりませんでした。mouseOverのスタイルを変更する

答えて

3

StyleプロパティをIsMouseOverにバインドし、一般的な "真の値"/"偽値"コンバータを使用できます。

あなたはこの

<Window.Resources> 
    <Style TargetType="Button" x:Key="normalStyle"> 
     <Setter Property="Foreground" Value="Green"/> 
    </Style> 
    <Style TargetType="Button" x:Key="mouseOverStyle"> 
     <Setter Property="Foreground" Value="Red"/> 
    </Style> 
    <converters:BooleanObjectConverter FalseValue="{StaticResource normalStyle}" 
             TrueValue="{StaticResource mouseOverStyle}" 
             x:Key="styleConverter"/> 
</Window.Resources> 

のようにコンバータを指定してバインドすることができStyle

public class BooleanObjectConverter : IValueConverter 
{ 
    public object TrueValue { get; set; } 
    public object FalseValue { get; set; } 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if ((bool)value == true) 
     { 
      return TrueValue; 
     } 
     return FalseValue; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 
BooleanObjectConverter

<Button Style="{Binding RelativeSource={RelativeSource Self}, 
         Path=IsMouseOver, 
         Converter={StaticResource styleConverter}}" 
     ... /> 

IsMouseOver

関連する問題