我正在尝试通过MenuItem控件设置我的MainWindow的背景,使用MenuItem.Icon。问题是MenuItem.Icon是一个对象,而MainWindow.Background是Brush(或Brush控件)类型。有没有一种方法可以在这两者之间进行转换?我已经尝试了BrushConverter.ConvertFrom,但它无法转换图像对象(这是显示的异常消息)。谢谢!以下是一些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;
}
MenuItem.Icon
是一个object
只是技术细节而已。事实上,这个编辑甚至可能改变问题的含义。我认为其他人可能更容易通过原始标题找到这篇文章。但也许这只是我的想法... - wkl