4

wpfのボタンに問題があります。マウスをボタンの上に移動すると、デフォルトの水色になりますが、ボタンに画像があるため、マウスがそこにある間は画像が非表示になります。

私はこれに対するいくつかの解決策を見てきましたが、それらはXAMLコードで作成されました。ボタンをプログラムで作成したので、機能しません。また、カーソルがない場合も、最後に押したボタンが常に点滅します。問題は同じです。したがって、xamlコードではなくC#コードが必要です。

何か案は?:)

4

1 に答える 1

1

点滅するボタンと青色のハイライト色はボタンのデフォルト スタイルの一部であり、変更するにはデフォルト スタイルをオーバーライドする必要があります。XAML でスタイルを作成し、プログラムで割り当てることをお勧めします。ここでデフォルトのボタン スタイルを取得してから、プログラムでスタイルを設定する方法に関するこの投稿を参照してください。

更新: それは私にとってはうまくいくようで、ここに私がやったことがあります:

問題のあるボタンをバック コードで作成し、スタイルを設定します。

public MainWindow()
{
    InitializeComponent();

    Bitmap bitMap = new Bitmap(@"\path\to\image.png");
    MemoryStream ms = new MemoryStream();
    bitMap.Save(ms, ImageFormat.Png);
    ms.Seek(0,SeekOrigin.Begin);

    BitmapImage bitMapImage = new BitmapImage();
    bitMapImage.BeginInit();
    bitMapImage.StreamSource = ms;
    bitMapImage.EndInit();

    Image image = new Image();
    image.Source = bitMapImage;
    image.Height = 100;

    Button button = new Button();
    button.Height = 200;
    button.Width = 200;
    button.Content = image;
    button.Style = button.Style = (Style)FindResource("myButtonStyle");

    myGrid.Children.Add(button);
 } 

Microsoft が提供するボタン スタイルをコピーして貼り付け、希望どおりに動作するように変更して、XAML でスタイルを作成します。マウスオーバー効果を無効にするために、セクションをコメントアウトしました<VisualState x:Name="MouseOver"> ... </VisualState>

<Style x:Key="myButtonStyle" TargetType="Button">
    <!-- Style copied from MSDN Button Style page -->
    <!-- Remove or comment out <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}" /> -->
    <!-- Remove or comment out <VisualState x:Name="MouseOver> ... </VisualState>
    <!-- Change colors to your liking or set to Transparent to not show color -->
    ....
</Style>
于 2012-04-28T20:16:18.633 に答える