Canvas에 내 이미지가 표시되는 ItemsControl
이 있습니다. 나는 propoties와 클래스의 객체와 함께 ObservableCollection
있습니다 Images
내 ObservableCollection
입니다DataTemplate에서 이미지 소스를 바인딩하는 동안 오류가 발생했습니다.
<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>
:
Image Image;
double X;
double Y;
내 XAML은 다음과 같은 코드가 포함되어 있습니다. 이제 문제는 해당 컬렉션의 Image
을 ImageSource
의 DataTemplate
에 바인딩 할 수 없다는 것입니다.
System.Windows.Data Error: 1 : Cannot create default converter to perform 'one-way' conversions between types 'System.Windows.Controls.Image' and 'System.Windows.Media.ImageSource'. Consider using Converter property of Binding. BindingExpression:Path=Image; DataItem='ImageItemViewModel' (HashCode=7670737); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource')
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='System.Windows.Controls.Image' BindingExpression:Path=Image; DataItem='ImageItemViewModel' (HashCode=7670737); target element is 'Image' (Name=''); target property is 'Source' (type 'ImageSource')
그것은 내가 넣을 때 작동합니다 :
<Image Source="{Binding Image.Source}"/>
대신
<Image Source="{Binding Image}"/>
하지만 내가 잃고 내가 쓴 나는 그것을 할 경우에, 나는 오류를 받고 있어요 모든 이미지의 속성 (예 : 효과 등).
그래서 질문은 : 전체 소스를 바인딩하는 대신 컬렉션 개체에있는 전체 Image
개체를 어떻게 넣을 수 있습니까?
예, 는 내가 찾고있는 것입니다! 고맙습니다! –
krajol
ContentControl 대신 ContentPresenter를 사용하는 방법은 [이 질문 (http://stackoverflow.com/q/1287995/1136211)을 참조하십시오. – Clemens