WPF 버튼에 이미지 추가
이 솔루션을 사용해 보았습니다.
<Button>
<StackPanel>
<Image Source="Pictures/img.jpg" />
<TextBlock>Blablabla</TextBlock>
</StackPanel>
</Button>
하지만 저는 프로젝트 창에서만 이미지를 볼 수 있고, 프로그램을 실행하면 이미지가 사라집니다.
시도할 경우:
Image img = new Image();
img.Source = new BitmapImage(new Uri("foo.png"));
StackPanel stackPnl = new StackPanel();
stackPnl.Orientation = Orientation.Horizontal;
stackPnl.Margin = new Thickness(10);
stackPnl.Children.Add(img);
Button btn = new Button();
btn.Content = stackPnl;
""시스템"을 받았습니다.창문들.PresentationFramework.dll" 예외에 Markup.XamlParseException'이(가) 있습니다.
해결책은 무엇일까?
'누락된' 이미지의 경우 고려해야 할 몇 가지 사항이 있습니다.
XAML이 리소스를 찾을 수 없는 경우 리소스를 무시할 수 있습니다(슬롯하지 않을 때).
XamlParseException
)리소스를 올바르게 추가하고 정의해야 합니다.
예상되는 위치에 프로젝트에 존재하는지 확인합니다.
프로젝트를 리소스로 사용하여 빌드되었는지 확인합니다.
(오른쪽 버튼 → 속성 → BuildAction = 'Resource' 클릭)
비슷한 경우에 시도해야 할 또 다른 방법은 이미지(또는 다른 리소스)를 재사용하는 데도 유용합니다.
XAML에서 이미지를 리소스로 정의합니다.
<UserControl.Resources>
<Image x:Key="MyImage" Source.../>
</UserControl.Resources>
나중에 원하는 컨트롤로 사용합니다.
<Button Content="{StaticResource MyImage}" />
아래의 XAML 스니펫을 사용해 보십시오.
<Button Width="300" Height="50">
<StackPanel Orientation="Horizontal">
<Image Source="Pictures/img.jpg" Width="20" Height="20"/>
<TextBlock Text="Blablabla" VerticalAlignment="Center" />
</StackPanel>
</Button>
XAML에서 요소는 트리 구조에 있습니다.따라서 자녀 제어를 부모 제어에 추가해야 합니다.아래 코드 스니펫도 잘 작동합니다.XAML 루트 그리드의 이름을 'MainGrid'로 지정합니다.
Image img = new Image();
img.Source = new BitmapImage(new Uri(@"foo.png"));
StackPanel stackPnl = new StackPanel();
stackPnl.Orientation = Orientation.Horizontal;
stackPnl.Margin = new Thickness(10);
stackPnl.Children.Add(img);
Button btn = new Button();
btn.Content = stackPnl;
MainGrid.Children.Add(btn);
사용:
<Button Height="100" Width="100">
<StackPanel>
<Image Source="img.jpg" />
<TextBlock Text="Blabla" />
</StackPanel>
</Button>
그건 작동할 거야.그러나 프로젝트의 리소스에 이미지를 추가해야 합니다!
텍스트를 오버레이하려면 버튼의 배경을 이미지로 설정할 수 있습니다.
<Button>
<Button.Background>
<ImageBrush ImageSource="/AssemblyName;component/Pictures/img.jpg"/>
</Button.Background>
<TextBlock>Blablabla</TextBlock>
</Button>
이미지 소스 구문을 주의하십시오.도움말은 이 질문을 참조하십시오.
저도 같은 문제가 있었습니다.저는 다음 코드를 사용하여 수정했습니다.
<Button Width="30" Margin="0,5" HorizontalAlignment="Stretch" Click="OnSearch" >
<DockPanel>
<Image Source="../Resources/Back.jpg"/>
</DockPanel>
</Button>
참고: 속성 창에서 이미지의 빌드 작업은 다음과 같아야 합니다.Resource
.
컨텐츠 템플릿 사용:
<Button Grid.Row="2" Grid.Column="0" Width="20" Height="20"
Template="{StaticResource SomeTemplate}">
<Button.ContentTemplate>
<DataTemplate>
<Image Source="../Folder1/Img1.png" Width="20" />
</DataTemplate>
</Button.ContentTemplate>
</Button>
또한 Resources(리소스) 탭의 Access Modifier(액세스 수정자)를 'Public(공용)'으로 설정해야 했습니다. 기본적으로 내부로 설정되어 있으며 아이콘은 설계 모드에서만 표시되고 응용 프로그램을 실행할 때는 나타나지 않았습니다.
언급URL : https://stackoverflow.com/questions/17515631/add-an-image-in-a-wpf-button
'programing' 카테고리의 다른 글
인덱스별 목록 항목 가져오기 (0) | 2023.05.29 |
---|---|
사용자 지정 iOS 보기 클래스를 만들고 여러 복사본(IB)을 인스턴스화하려면 어떻게 해야 합니까? (0) | 2023.05.29 |
프로세스가 실행 중인지 올바르게 확인하고 프로세스를 중지하는 방법 (0) | 2023.05.29 |
선택기가 null을 반환하는지 탐지하려면 어떻게 해야 합니까? (0) | 2023.05.29 |
Gitdiff는 하위 프로젝트가 더럽다고 말합니다. (0) | 2023.05.29 |