我有一个ItemsControl
应该显示我的图像的画布。我有一个ObservableCollection
带有属性的类的对象:
Image Image;
double X;
double Y;
我的 XAML 包含以下代码:
<ItemsControl ItemsSource="{Binding Images}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas AllowDrop="True" Drop="Canvas_Drop_1" MouseDown="canvas_MouseDown_1" Background="{StaticResource LightColor}" Name="canvas" >
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Image}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="{Binding Y}" />
<Setter Property="Canvas.Left" Value="{Binding X}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Images
我的在哪里ObservableCollection
。现在的问题是我无法Image
将该集合中的一个绑定到 aImageSource
中的一个DataTemplate
。如果我按照我写的那样做,我会收到一个错误:
System.Windows.Data 错误:1:无法创建默认转换器以在类型“System.Windows.Controls.Image”和“System.Windows.Media.ImageSource”之间执行“单向”转换。考虑使用 Binding 的 Converter 属性。绑定表达式:路径=图像;DataItem='ImageItemViewModel' (HashCode=7670737); 目标元素是'图像'(名称='');目标属性是“源”(类型“ImageSource”)
System.Windows.Data 错误:5:BindingExpression 生成的值对目标属性无效。;值='System.Windows.Controls.Image' BindingExpression:Path=Image; DataItem='ImageItemViewModel' (HashCode=7670737); 目标元素是'图像'(名称='');目标属性是“源”(类型“ImageSource”)
当我把它工作:
<Image Source="{Binding Image.Source}"/>
代替
<Image Source="{Binding Image}"/>
但后来我失去了它所具有的所有图像属性(如效果等)。
Image
所以问题是:我怎样才能把我的集合对象中的整个对象放在那里,而不是只绑定它的源?