Я пытаюсь установить фон Mainwindow [через элемент MenuItem], используя MenuItem.Icon. Проблема заключается в том, что MenuItem.Icon является объектом , а Mainwindow.Background - это Кисть (или управление кистью). Есть ли способ конвертировать между этими двумя? Я пробовал BrushConverter.ConvertFrom, но он не может преобразовать объекты Image (это показанное сообщение об исключении). Благодаря! Вот некоторые XAML код:C# - преобразовать объект в кисть (WPF)
<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] (https://msdn.microsoft.com/en-us/library/system.windows.media.imagebrush (v = vs.110) .aspx) быть тем, что вы ищете? – wkl
На самом деле, я предпочитаю оригинальную версию отредактированной. Вы фактически конвертируете изображение, а не объект. Тот факт, что 'MenuItem.Icon' является« объектом », является просто технической деталью ИМО. Фактически, это изменение может даже изменить смысл вопроса. Я думаю, что другие люди могут легче найти этот пост своим оригинальным названием. Но, возможно, это только я ... – wkl