Использование Windows 8 Developer Preview.
У меня есть объект с одним из следующих свойств:
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 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);
}
}
Теперь, когда я запускаю это, я получаю исключение:
Исключение типа 'System.InvalidCastException' произошло в Test.exe, но не было обработано в коде пользователя
Дополнительная информация: невозможно преобразовать COM-объект типа «Windows.UI.Xaml.Data.Binding» в тип класса «Windows.UI.Xaml.Media.ImageSource»
Теперь ... когда я преобразую свойство в usercontrol в строковый тип (и привязку к строке), все работает как положено, поэтому я должен делать что-то еще не так ... что?