繁体   English   中英

如何以编程方式打开鼠标按钮效果?

[英]How to switch on the mouse over effect of a button programmatically?

我的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM