我对 wpf 中的按钮有疑问。如果我将鼠标移到按钮上,它会变成默认的浅蓝色,但我在按钮中有一个图像,所以当鼠标在那里时图像会隐藏。
我已经看到了一些解决方案,但它们是在 XAML 代码中制作的。我以编程方式创建了我的按钮,所以它不起作用。如果我没有将光标放在最后一个按钮上,它也会一直闪烁。问题是一样的。所以我需要 C# 代码而不是 xaml 代码。
有任何想法吗?:)
闪烁按钮和蓝色突出显示颜色是按钮默认样式的一部分,要更改它,您需要覆盖默认样式。我建议在 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>