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을의 속성을 변환, 모든 작업 예상대로, 내가 틀린 일을하고있을거야. 뭐라구?
나는이 사실을 알고 간단하게하기 위해 ObservableCollection에이 문제를 변경했다. 어느 쪽이든 작동하지 않습니다 – Flores
오, 그럼 그게 문제가 아니에요. 코드를 통해 보았는데 나에게 잘 보였다. 등록 할 때 PropertyMetadata를 초기화하십시오. 이 코드를 실행 해 보겠습니다. – sarvesh
PropertyMetaData를 설정해도 도움이되지 않습니다. – Flores