2011-12-21 3 views
0

그 안에 이미지를 사용하는 사용자 지정 WPF 컨트롤을 만들고 있습니다. 이 사용자 지정 컨트롤은 다른 것과 마찬가지로 xaml에서 선언됩니다.속성 설정 xaml에서 컨트롤

<Image Source="http://foo.com/bar.jpg"></Image> 

내가하고 싶은 것은 다음과 같은 사용이 있습니다 : 나는 이미지 컨트롤을 사용하면이 작업을 수행, 거의 같은 방식으로 내부 이미지의 소스를 지정하려면이 제어를위한 공공 재산을 갖고 싶어 내 컨트롤 : 내부적으로 다음

<MyCustomControl ImageSource="http://foo.com/bar.jpg"></MyCustomControl> 

그리고, 같은 :

<UserControl class="MyCustomControl" ...> 
    <Image Source="{Binding Imagesource}"></Image> 
</UserControl> 

내가 얻을 내 코드 숨김에서 필요합니까 설치 어떤 종류의이 작업을? 나는 몇 가지 시도했지만 아무것도 작동하지 않을 수 있습니다. 당신이 필요로하는 무엇

+0

'이미지 소스'를 만드는 방법을 묻는 중입니까? 그렇다면 DependencyProperty를 찾고 있습니다. 또는 DependencyProperty를 캡슐화 된 컨트롤에 연결하는 방법을 묻고 있습니까? 호기심에서 벗어난 – MBirchmeier

답변

2

ElementName 또는 RelativeSource를 사용 UserControlsDataContext를 사용하지 않는 중 하나를 입력 ImageSource 및 바인딩 적절한의 dependency property입니다.

<UserControl Name="control" x:Class="MyCustomControl" ...> 
    <Image Source="{Binding ImageSource, ElementName=control}"/> 
</UserControl> 

<UserControl x:Class="MyCustomControl" ...> 
    <Image Source="{Binding ImageSource, 
          RelativeSource={RelativeSource AncestorType=UserControl}}"/> 
</UserControl> 
+0

- 사용자 정의 컨트롤을 사용하여 DataContext를 사용하면 어떤 결과가 나겠습니까? –

+1

@Dmitry : 일반적으로 DataContext가 명시 적으로 설정되지 않으면 상속 될 것으로 예상합니다. 문제는 DataContext가 UserControl에 설정된 경우 * 인스턴스에 표시되지 않고 * 다른 DataContext가 예상되어서 바인딩이 예기치 않게 실패하는 것입니다. –

+0

이상하게도 내 Silverlight 응용 프로그램에서 작동하지만 WPF 응용 프로그램에서는 작동하지 않습니다. 왜 그런가? – PhilBrown

관련 문제