2012-04-28 17 views
4

wpfのボタンに問題があります。マウスをボタンの上に移動すると、デフォルトの明るい青色になりますが、ボタンに画像があるため、マウスが置かれている間は画像は非表示になります。ボタンの効果をプログラム上でマウスで切り替えるにはどうすればいいですか?

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

アイデア? :)

+0

編集内容は? – Bene

+0

Ott、タグが編集されました。 – dsolimano

答えて

1

点滅ボタンと青色のハイライトカラーは、ボタンのデフォルトスタイルの一部であり、デフォルトのスタイルを変更する必要があります。私は、あなたがXAMLのスタイルであることを作って、それをプログラム的に割り当てることを提案したいと思います。プログラムでスタイルを設定する方法については、既定のボタンスタイルhereを取得し、this postを参照してください。

更新: 私のために働くようだと、ここで私がやったことです:

はバックコードでという問題ボタンを作成し、スタイルを設定します。

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); 
} 

はでスタイルを作成します。 XAMLは、Microsoftが提供するボタンスタイルをコピーして貼り付け、必要に応じて動作するように変更します。マウスオーバー効果を無効にするには、私はセクションをコメントアウトしました。<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> 
+0

OK。私はあなたの解決策を試しましたが、私が望むことはしません。ボタン内でテキストスタイルが変更されますが、カーソルがその上にあるときには同じ明るい青色になります。だから私のイメージは表示されません。 – Bene

関連する問題