2013-04-10 5 views
0

프런트 엔드 이미지에 백 엔드를 바인딩하는 데 약간의 문제가 있습니다. 이미지가 동적입니다.이미지 바인딩이 작동하지 않습니다.

public string currentCardImage 
    { 
     get 
     { 
      return currentCard.imageSource; 
     } 
    } 

이에 대한 프론트 엔드 XAML됩니다 : 여기에 프론트 엔드를 제공하는 백 엔드의 코드는 불행하게도이 작동하지 않습니다

<Image Name="ImageMain" 
     Source="{Binding currentCardImage}" 
     HorizontalAlignment="Left" 
     Height="100" 
     Margin="368,529,0,0" 
     Grid.Row="1" 
     VerticalAlignment="Top" 
     Width="100" 
     RenderTransformOrigin="0.5,0.5"> 
    <Image.RenderTransform> 
    <CompositeTransform Rotation="90.203" /> 
    </Image.RenderTransform> 
</Image> 

. currentCard에로드 된 데이터가 있다는 것을 확인할 수 있으므로 imageSource는 이미지의 위치를 ​​반환합니다.

자세한 정보가 필요하면 알려주십시오. 어떤 도움이라도 대단히 감사합니다!

편집 : C# 코드는

+0

당신이 당신의보기에의 DataContext를 할당 마십시오 바인딩 말씀입니까? 그렇지 않으면 CodeBehind 파일에 코드가있을 때에도 바인딩이 작동하지 않습니다. – Jehof

+1

INotifyPropertyChanged를 구현 했습니까? – xiriusly

+0

이미지 빌드 작업이 솔루션의 리소스로 설정되어 있습니까? 그렇다면 다음과 같이 사용하십시오 : pack : // application : ,,,/Images/yourImage.png 여기서 Images는 이미지가 솔루션에있는 폴더입니다 –

답변

0

당신의 바인딩은 바인딩이 DataContext 건물 내에서 개최 된 인스턴스에 기본적으로 있다는 것입니다 실패 이유 뒤에 XAML 코드입니다.

public sealed class MyClass : Window 
{ 
    public string currentCardImage 
    { 
     get { // SNIP! 

: 그래서, 당신은이 건물이 코드 숨김에 말 때문에

{Binding currentCardImage} 

실제로

this.DataContext.currentCardImage 

을 의미 바인딩, 당신의 코드를 가정하고있어 다음과 같이 보입니다 이 속성에 바인딩하려면 바인딩을 xaml 트리의 루트를 찾는 방향으로 리디렉션해야합니다. r Window)를 사용하여 지정된 경로를 찾습니다.

이 작업을 수행하는 가장 쉬운 방법은 루트 요소

<Window x:Class="HerpDerp" 
     HideOtherAttributesBecauseThisIsAnExample="true" 
     x:Name="thisIsTheBindingTarget"> 
    <!-- snip --> 

이름을 지정하고이보고

{Binding currentCardImage, ElementName=thisIsTheBindingTarget} 
관련 문제