나는 이미지를 표시하기 위해 간단한 usercontrol을 만들고, 결국 WPF 응용 프로그램에서 버튼 역할을하도록 노력해 왔습니다.이 이미지를 WPF 사용자 컨트롤에 표시하려면 무엇이 필요합니까?
이러한 사용자 정의 컨트롤 중 하나가 폼의 XAML에 쓰여지고 이미지가 항상 표시됩니다. 그러나 프로그래밍 방식으로 스택 패널에 추가 할 때는 컨트롤이 있지만 이미지는 표시되지 않습니다. (간단하지만이 예를 들어 작동) 내가 ImageSource 형식의 종속성 속성으로 Source 속성을 설정
<UserControl x:Class="ImgButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
MinHeight="32" MinWidth="32"
x:Name="uc_ImgButton">
<Border BorderBrush="Gray" BorderThickness="2">
<Image Source="{Binding ElementName=uc_ImgButton, Path=Source}" x:Name="img"/>
</Border>
</UserControl>
: 여기
은 UserControl을의 여기Partial Public Class ImgButton
Public Property Source() As ImageSource
Get
Return GetValue(SourceProperty)
End Get
Set(ByVal value As ImageSource)
SetValue(SourceProperty, value)
End Set
End Property
Public Shared ReadOnly SourceProperty As DependencyProperty = _
DependencyProperty.Register("Source", _
GetType(ImageSource), GetType(ImgButton))
End Class
의 예 VB에서 프로그래밍 방식으로 이들을 추가하는 방법 :
Dim newBtn As New myApp.ImgButton
newBtn.Width = 100
newBtn.Height = 100
Dim bi As New BitmapImage
bi.BeginInit()
bi.UriSource = New Uri("C:\test.png", UriKind.RelativeOrAbsolute)
bi.EndInit()
'MsgBox(bi.Width) '(a simple debug test I added)
newBtn.Source = bi
Me.StackPanelMain.Children.Add(newBtn)
이상한 부분은 ... 코드 a 위의 이미지는 오류없이 실행되지만 내 양식의 결과는 내부에 이미지가없는 빈 테두리입니다.
그러나 MsgBox 행의 주석을 해제하면 이미지가 표시됩니다. BitmapImage에서 값을 얻도록 강요하는 것처럼 동작합니다. 나는 또한 MsgBox 라인을 "dim x as integer = bi.PixelWidth"와 같은 무언가로 대체하려고 시도했으며 이미지 디스플레이를 만들었습니다. 내가 가져 가면 내 양식에 이미지가 없어집니다.
나는 뭔가를 놓치고 있거나 뭔가를 이해하지 못한다고 생각합니다. 내 앱에서 겉으로보기에 무의미한 코드 줄을 남겨두기보다는 무슨 일이 일어나고 있는지 배우고 싶습니다.
내 WPF 경험의이 시점에서, 대부분의 작업은 내가 온라인으로 찾은 코드 스 니펫을 기반으로합니다. 난 그 안에 표시되는 이미지를 변경할 수있는 속성을 가진 usercontrol을 원한다. 이 작업을 수행하는 더 좋은 방법이 있다면, 무료로 요금을 지불하십시오. 배우고 싶습니다 :-) 나는 당신의 제안을 이해하지 못합니다 ... 샘플 코드가 도움이 될 것입니다. –
추가 코드를 보내 주셔서 감사합니다. XAML에서 데이터 바인딩 문을 작성하는 방법과 특정 바인딩 방법을 사용하는 것이 적절한 지에 대해서는 항상 이해하지 못했습니다. –
잠깐 기다리려면 시간이 걸립니다. VS2010에는 마크 업 확장 (바인딩 포함)에 대한 인텔리 센스가 있으므로 학습 곡선에 도움이 될 것으로 기대됩니다. – Andy