【发布时间】:2017-01-25 11:49:02
【问题描述】:
我正在尝试使用 MenuItem.Icon [通过 MenuItem 控件] 设置主窗口的背景。问题是 MenuItem.Icon 是 object,而 Mainwindow.Background 是 Brush(或 Brush Control)类型。 有没有办法在这两者之间进行转换?我试过 BrushConverter.ConvertFrom,但它无法转换 Image 对象(即显示的异常消息)。谢谢!这是一些 XAML 代码:
<MenuItem Header="Waterfall" Click="BackgroundMenuItem_Click">
<MenuItem.Icon>
<Image Source="images/backgrounds/Waterfall.jpg"/>
</MenuItem.Icon>
</MenuItem>
下面是代码:
//switch background:
//event
private void BackgroundMenuItem_Click(object sender, RoutedEventArgs e)
{
try
{
BackgroundMenuItem_Switch((MenuItem)sender, e);
}
catch(Exception exc)
{ MessageBox.Show(exc.Message); }
}
//switch func
private void BackgroundMenuItem_Switch(MenuItem sender, RoutedEventArgs e)
{
var converter = new BrushConverter();
var brush = converter.ConvertFrom(sender.Icon);
this.Background = (Brush)brush;
}
【问题讨论】:
-
不确定是否找到异常消息。
-
ImageBrush 不是您要找的吗?
-
其实我更喜欢原版而不是编辑版。您实际上是在转换图像,而不是对象。
MenuItem.Icon是object的事实只是 IMO 的技术细节。事实上,这个编辑甚至可能会改变问题的含义。我认为其他人可能更容易通过原始标题找到这篇文章。但也许这只是我......