マウスオーバー効果を無効にします。背景を設定すると、これは私のスタイルです
<UserControl.Resources>
<Style TargetType="Button" x:Key="Style2" BasedOn="{StaticResource MetroCircleButtonStyle}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="#000000"/>
<Setter Property="Background" Value="#ededed"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="#ffffff"/>
<Setter Property="Background" Value="#009688"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#FF808080"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
そして、私はこのようにそれを使用:
<Button x:Name="button" Content="abcdefg" Style="{DynamicResource Style2}" Width="45" Height="45" VerticalAlignment="Top" BorderThickness="0" FontSize="18" FontFamily="/WpfApplication2;component/Resources/#Vazir"/>
これは完全にOKに動作します。問題は、XAMLを変更するか、背景を動的に変更してボタンの背景を変更しようとするときです。私がそうすると、マウスオーバーエフェクトはもう働きません。
<Button x:Name="button" Content="abcdefg" Background="White" Style="{DynamicResource Style2}" Width="45" Height="45" VerticalAlignment="Top" BorderThickness="0" FontSize="18" FontFamily="/WpfApplication2;component/Resources/#Vazir"/>
それとも
button.Background = Brushes.Transparent;
私は背景を設定したときにマウスオーバー効果は動作しませんが、私は背景を設定する必要があります。なにが問題ですか?
プログラムでバックグラウンドをこのように変更するにはどうすればよいですか? – SMahdiS
スタイルをプログラマチックに設定します。あなたのトリガーでは、背景をまったく変更しない方がいいです。 – Clemens
コードベースでbasedOnを設定する方法がわかりません:Style style = new Style { TargetType = typeof(Button) }; style.Setters.Add(新しいSetter(Control.ForegroundProperty、Brushes.Green)); style.basedOn =? myControl.Style = style; – SMahdiS