Я пытаюсь установить фон моего основного окна [через элемент управления MenuItem], используя MenuItem.Icon. Проблема заключается в том, что MenuItem.Icon — это объект, а Mainwindow.Background — тип Brush (или Brush Control). Есть ли способ преобразования между этими двумя? Я пробовал использовать 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
, является лишь технической деталью IMO. Фактически, это редактирование может даже изменить смысл вопроса. Я думаю, что другим людям будет легче найти этот пост по его оригинальному названию. Но, может быть, это только я... - person wkl   schedule 25.01.2017