1

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에 있는지 확인 했으므로 파일을 찾을 수 없습니다.

아이디어 나 의견을 보내 주셔서 감사합니다.

+0

이미지를 반환하는 속성을 만들고 대신 – JonAlb

+0

@JonAlb에 바인딩 : 문제가 해결 것이지만, 그 모든 별도의 이미지 속성을 가지고 훨씬 덜 유연 파일 이름에서 만들어야합니다. 대부분의 바인딩 전환에는 변환기를 사용하는 것이 좋습니다. 그런 다음 사용 후 이미지를 메모리에 저장하지 마십시오. –

답변

2

격리 된 저장소 파일은 스트림으로만 액세스 할 수 있습니다. 거기에 이미지를 저장하려면 바인딩에서 변환기를 사용해야합니다. 그러면 지정된 파일이 열리 며 스트림이 메모리로로드되고 비트 맵 이미지 소스가 반환됩니다. 그들은 단지 파일 이름을 반환하지 않습니다.

예제와 같은 상대 경로는 Silverlight DLL의 응용 프로그램 리소스 또는 웹 사이트 리소스 (슬래시 및 어셈블리 이름 등)에 따라 저장되는 이미지와 함께 사용됩니다.

이 답변이 변환기를 가지고 당신이 시도 할 수 있습니다 : Windows Phone 7 Silverlight binding image from the IsolatedStorage

+0

감사합니다. 처음에 실제로 이미지를로드 한 코드가 있었는데 기다렸다가 왜 파일 이름을 가리킬 수있을 때 스트림을 반환할까요? 당신의 설명은 모든 것이 어떻게 작동하는지 더 잘 이해하는 데 도움이되었습니다. – MariusVE

관련 문제