2011-06-13 5 views
0

this을 시도했으며 this (첫 번째로 이어짐)을 보았습니다. 그것들은 WPF를위한 훌륭한 솔루션입니다. 우리 모두가 알기 시작하면서, Windows Phone 7에는 멋진 엣지 케이스가 빠져 있습니다.이미지를 WP7의 로컬 리소스로 설정

내 프로젝트는 동적 인 이미지가없는 것으로 판단됩니다. 리소스 파일에 바인딩하려고하는 태그가 있는데 작동하지 않습니다. 다음 두 가지 모두 시도해 보았지만 어느 것도 작동하지 않는 것 같습니다.

먼저 인기있는 변환기입니다. URI 문자열을 가져 와서 비트 맵 이미지를 반환합니다. 분명히 그것은 WPF에서 작동하지만, 나는 그것을 작동하게 만들 수 없습니다.

public class BitmapImageConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, 
           object parameter, CultureInfo culture) 
     { 
      try 
      { 
       return new BitmapImage(new Uri((string)value)); 
      } 
      catch 
      { 
       return new BitmapImage(); 
      } 
     } 

     public object ConvertBack(object value, Type targetType, 
            object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

다음은 BitmapImage 속성입니다. 이 제품이 실제로 작동하지 않을 것이라고 기대하지 않았으며 실망시키지 않았습니다.

public BitmapImage ImgSource 
    { 
     get 
     { 
      // ImgURI is a URI to the image. 
      BitmapImage newImg = new BitmapImage(new Uri(ImgURI)); 
      // Tried ALL the creation options. :(
      //newImg.CreateOptions = BitmapCreateOptions.None; 

      return newImg; 
     } 
    } 

내가 점을 디버깅 한
 <Image Name="imgMap" 
       VerticalAlignment="Center" 
       HorizontalAlignment="Center" 
       Source="{Binding ImgURI, Mode=OneWay, Converter={StaticResource bitmapConverter}}" 
        Stretch="None"/> 

나는 각 바인딩은 반환 것을 알고 .... 내가 (다른 곳에서 정의 된) 인 계산기에 사용하고있는 XAML입니다 그것이 무엇을 해야하는지. 변환기가 호출되고 내가해야한다고 생각하는 것을 수행합니다. ImgURI는 항상 "/MyNamespace;component/Images/MyImg.jpg"형식의 문자열을 반환하며 ImgSource는 항상 bitmapImage입니다. 모든 이미지에는 BuildAction of "Resource"가 있습니다.

나는 분명히 뭔가를 놓치고 싶습니다. 내 문제를 살펴 주셔서 감사 드리며 추가 정보가 필요하면 의견을 남겨주세요.

+0

리소스는 소비중인 '이미지'와 동일한 어셈블리에 있습니까? 이것은 에뮬레이터와 장치에서 모두 실패합니까? 변환기가 예외를 던지거나 다른 것을 던지나요? –

+0

예. 예. 변환기가 정상적으로 작동하고 오류나 예외 또는 회피가 발생하지 않습니다. 이상하지. – Craig

답변

1

이 문제가 궁금하지 않으므로 UriKind.RelativeUri 생성자에 전달해야합니다.

+0

문제는 내가 완전한 정신 붕괴를 가지고 밝혀졌다. "(새로운 Uri (문자열) 값)"이라는 문장은 훌륭하지만 실제로 작동하려면 명시 적으로 relative로 설정해야합니다. 한숨. 확인해 주셔서 감사합니다! – Craig

3

Resource이 아닌 Content의 빌드 작업을 사용해야합니다.

+0

콘텐츠를 넣는 것이 나쁘다는 것을 좌, 우로 맹세 할 수 있습니다. 나는 그것을 들여다 볼 것이다. 나는 기꺼이 적어도 (적어도별로) 성능에 약간의 영향을 주었다. – Craig

+0

'Resource '를 여러 번 사용하여'/ project; component/path.jpg' 구문을 사용했습니다. 실제로 XAML 편집기 경고는 'Resource'로 설정하지 않아도 문제가 될 수 있음을 알립니다. –

+0

상대 경로를 설정하면 어느 쪽이든 작동합니다. 종류의 이유를 알고 싶어 ... :) – Craig

관련 문제