Windows Phone 7 용 응용 프로그램을 작성 중이며 필드를 databind하는 방법을 알고 있지만 XAML 요소에 이미지를 databind 할 수 없습니다.이미지 데이터 바인딩 XAML, Silverlight, C#, Windows Phone 7.1
이 내 이미지 요소가 내 XAML에 정의 된 방법입니다
<image Source="{Binding ImageLocation}" > </image>
ImageLocation은 문자열 속성입니다. 어떤 이유로 "ImageLocation"이 인터넷상의 이미지를 가리키는 문자열 (예 : "http : //whatever/image.jpg")이지만 이미지가 로컬에 저장되어 있으면 아무 것도 표시하지 않는 경우 이미지가 표시됩니다 격리 된 저장소에.
실제로 이미지는 "이미지"라는 분리 저장 장치의 폴더에 있습니다. 따라서 ImageLocation 속성을 "Images \ image.jpg"로 설정하려고 시도했지만 작동하지 않았습니다. 이미지가 단순히 나타나지 않습니다. 나는 또한 "/Images/image.jpg", "http : //localhost/Images/image.jpg"및 그 밖의 모든 이상한 조합과 같은 다양한 변형을 시도했다.
는 또한이 작업을 수행하려고했습니다 :<image Source="{Binding Path=ImageLocation}"> </image>
하지만 그 중 하나가 작동하지 않았다. 로컬 인 경우 이미지가 표시되지 않지만 원격 사이트에있는 이미지는 항상 작동합니다.
이미지를 표시하기 위해 "변환기"를 사용하여 웹에서 다양한 예제를 보았습니다. C#과 Silverlight를 처음 접했을 때 나는 왜 변환기가 필요한지 이해하지 못합니다. 이미지를 이해하는 변환기는 단순히 XAML 요소가 필요로하는 것을 기반으로 문자열 또는 실제 이미지 데이터를 반환합니다 (잘못된 것일 수 있음). 그러나 문자열이 작동해야한다는 것을 미리 알고 있기 때문에 왜이 변환기를 작성해야합니까?
이미지 외에도 다른 모든 필드는 올바르게 바인딩됩니다. 내가 ItemTemplate을하고 DataTemplate을을 가지고 내 XAML 페이지의 목록 상자 요소를 정의하고
:
여기에 내 코드 설정에 대한 몇 가지 생각입니다. 그 안에는 이미지와 텍스트 필드를 각각 보유하는 두 개의 열이있는 눈금이 있습니다.
이외에도 지연로드를 지원하기 위해 IList에서 파생 된 클래스가 있습니다. 이 클래스에는 목록 상자의 각 행을 나타내는 "ListItems"목록이 있습니다. ListItem에는 이미지를 정의하는 문자열 속성과 이미지와 관련된 일부 텍스트가 있습니다. 앞서 언급했듯이 텍스트 필드가 올바르게 작동하고 ImageLocation 속성이 격리 된 저장소의 위치가 아니라 인터넷의 위치를 가리키는 경우에만 이미지가 작동합니다.
Isolated Storage Explorer 도구를 사용하여 확인한 결과,로드하려고하는 이미지가 Isolated Storage에 있는지 확인 했으므로 파일을 찾을 수 없습니다.
아이디어 나 의견을 보내 주셔서 감사합니다.
이미지를 반환하는 속성을 만들고 대신 – JonAlb
@JonAlb에 바인딩 : 문제가 해결 것이지만, 그 모든 별도의 이미지 속성을 가지고 훨씬 덜 유연 파일 이름에서 만들어야합니다. 대부분의 바인딩 전환에는 변환기를 사용하는 것이 좋습니다. 그런 다음 사용 후 이미지를 메모리에 저장하지 마십시오. –