如何解决以编程方式将图像作为背景的 C# WPF MenuItem
我对 XAML 很不擅长,但我只需要创建一个 MenuItem,它有一个图像而不是文本。
我已经让它以某种方式工作,图像显示并加载在资源之外,但是在鼠标悬停时图像消失了。
您能帮我以编程方式完成这项工作吗?在互联网上,我只找到 XAML 示例,但没有以编程方式找到。
提前致谢。
var addOnFrameworkMenuItem = new MenuItem();
var image = new Image();
Assembly asm = Assembly.GetExecutingAssembly();
System.IO.Stream imageStream = asm.GetManifestResourceStream("MyProject.Ressources.image.png");
BitmapFrame bmp = BitmapFrame.Create(imageStream);
image.Source = bmp;
ImageBrush ib = new ImageBrush();
ib.ImageSource = bmp;
addOnFrameworkMenuItem.Width = 150;
addOnFrameworkMenuItem.Height = 31;
addOnFrameworkMenuItem.Background = ib;
解决方法
谢谢吉姆,
你的提示帮助了我。对于我的图像消失问题,我只需要将图像放入标题中:
addOnFrameworkMenuItem.Header = image;
此外,我发现可以通过以下方式设置大部分样式属性:
// Create a style to apply to the button
Style s = new Style();
s.TargetType = typeof(System.Windows.Controls.MenuItem);
s.Setters.Add(new Setter(System.Windows.Controls.MenuItem.FontSizeProperty,11.0));
s.Setters.Add(new Setter(System.Windows.Controls.MenuItem.BackgroundProperty,Brushes.Orange));
s.Setters.Add(new Setter(System.Windows.Controls.MenuItem.ForegroundProperty,Brushes.Black));
s.Setters.Add(new Setter(System.Windows.Controls.MenuItem.FontFamilyProperty,new FontFamily("Arial")));
s.Setters.Add(new Setter(System.Windows.Controls.MenuItem.FontWeightProperty,FontWeights.Bold));
Trigger t2 = new Trigger();
t2.Property = System.Windows.Controls.MenuItem.IsMouseOverProperty;
t2.Value = true;
t2.Setters.Add(new Setter(Control.BackgroundProperty,System.Windows.Media.Brushes.Violet));
s.Triggers.Add(t2);
addOnFrameworkMenuItem.Style = s;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。