2012-02-14 2 views
3

Windows 8 개발자 미리보기 사용.형식이 WinRT의 ImageSource이면 UserControl 속성에 바인딩하는 동안 오류가 발생했습니다.

private ImageSource _Image = null; 
    public ImageSource Image 
    { 
     get 
     { 
      return this._Image; 
     } 

     set 
     { 
      if (this._Image != value) 
      { 
       this._Image = value; 
       this.OnPropertyChanged("Image"); 
      } 
     } 
    } 

    public void SetImage(Uri baseUri, String path) 
    { 
     Image = new BitmapImage(new Uri(baseUri, path)); 
    } 

이이 같은 ObservableCollection에 사용된다 :

 var test = new ObservableCollection<object>(); 

     ButtonItem item = new ButtonItem(); 
     item.SetImage(this.basUri, "Data/Images/test.png"); 

test.png이 내용으로 포함되어

는이 같은 속성 중 하나가 객체를 가지고있다.

이 수집 그리드의 ItemsSource 설정과 같이하기 위해 사용된다 :

ItemGridView.ItemsSource = test; 

그리고이 그리드는 DataTemplate을 가지고

 <DataTemplate x:Key="testtemp"> 
     <Grid HorizontalAlignment="Left" Background="White"> 
      <StackPanel Orientation="Horizontal" Margin="10,10,0,0"> 
      <my:MyButton Image="{Binding Image}"></my:MyButton> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 

이 MyButton에 이미지의 사용자 제어이다 속성은 다음과 같은 종속성 속성입니다.

public static readonly DependencyProperty ImageSourceProperty = DependencyProperty.Register("Image", "ImageSource", typeof(VSButton).FullName, null); 

    public ImageSource Image 
    { 
     get { return (ImageSource)GetValue(ImageSourceProperty); } 
     set 
     { 
      SetValue(ImageSourceProperty, value); 
     } 
    } 

이제 실행하면 전 ception 'System.InvalidCastException'형식의

예외가 Test.exe라는에 발생했지만 사용자 코드에서

추가 정보 처리되지 않은 'Windows.UI.Xaml 유형의 COM 개체를 캐스팅 할 수 없습니다입니다. '클래스 유형에'Data.Binding Windows.UI.Xaml.Media.ImageSource '이제

... 나는 (그리고 문자열에 바인딩) 문자열 유형으로 UserControl을의 속성을 변환, 모든 작업 예상대로, 내가 틀린 일을하고있을거야. 뭐라구?

답변

0

ObservableCollection이 WinRT에서 제대로 작동하지 않습니다 (적어도 아직은). ObservableVector를 대신 사용하십시오. IObservableVector 구현을 제공하는 sample이 있습니다.

+0

나는이 사실을 알고 간단하게하기 위해 ObservableCollection에이 문제를 변경했다. 어느 쪽이든 작동하지 않습니다 – Flores

+0

오, 그럼 그게 문제가 아니에요. 코드를 통해 보았는데 나에게 잘 보였다. 등록 할 때 PropertyMetadata를 초기화하십시오. 이 코드를 실행 해 보겠습니다. – sarvesh

+0

PropertyMetaData를 설정해도 도움이되지 않습니다. – Flores

관련 문제