MenuItem.Icon을 사용하여 내 Mainwindow의 Background [MenuItem 컨트롤을 통해]을 설정하려고합니다. 문제는 MenuItem.Icon은 개체 인이고 Mainwindow.Background는 브러시 (또는 브러시 제어) 유형입니다. 이 두 형식을 변환하는 방법이 있습니까? BrushConverter.ConvertFrom을 시도했지만 이미지 개체 (표시된 Exception 메시지)를 변환 할 수 없습니다. 감사! 여기에 몇 가지 XAML 코드입니다 :개체를 브러시 (WPF)로 변환
<MenuItem Header="Waterfall" Click="BackgroundMenuItem_Click">
<MenuItem.Icon>
<Image Source="images/backgrounds/Waterfall.jpg"/>
</MenuItem.Icon>
</MenuItem>
여기에 코드 뒤에 :
<Window ...>
<Window.Background>
<ImageBrush ImageSource="img/0.png" />
</Window.Background>
...
</Window>
Background = new ImageBrush() { ImageSource = new BitmapImage(new Uri("img/1.png", UriKind.RelativeOrAbsolute)) };
또는 당신이 사용하는 경우 :
//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'이'object'라는 사실은 IMO의 기술적 인 세부 사항 일뿐입니다. 사실이 편집은 질문의 의미를 바꿀 수도 있습니다. 다른 사람들이 원래 제목으로 쉽게이 게시물을 찾을 수 있다고 생각합니다. 하지만 어쩌면 그건 나뿐입니다. – wkl