У меня есть холст, который берет много типов объектов и показывает их в определенных местах. У большинства объектов есть свойство Location, которое задается «Setter», и оно отлично работает.Доступ к объекту, содержащему сеттер внутри шаблона
У меня есть один сложный объект - собран из 4 растровых изображений. Я хочу иметь возможность устанавливать каждое растровое местоположение с помощью canvas.top и canvas.left, но не с местоположением в сеттере (они его не имеют), но с использованием собственного свойства location.
Вот код.
Моя проблема заключается в том, что WPF полностью игнорирует мое canvas.top и canvas.left назначение, даже если я использую числа и не привязываю - ничего не происходит.
В чем может быть проблема?
Вот мой текущий код. ComplexBitmap рисует себя в 0,0, а не там, где это ожидалось.
<ItemsControl Name="itemtest" ItemsSource="{Binding}" Height="576" Background="#FFB0B4B4" Width="704">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local2:DragCanvas x:Name="canvas1" AllowDragging="true" AllowDragOutOfView="False" Width="704" Height="576" Background="#3AC2DED4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Path=Location.X, Mode=TwoWay}"/>
<Setter Property="Canvas.Top" Value="{Binding Path=Location.Y, Mode=TwoWay}"/>
<Setter Property ="Visibility" Value="{Binding Path= ShowOnDemo, Converter={StaticResource BooleanToVisibilityConverter}}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplateSelector>
<local:CustomTemplateSelector>
.
<local:CustomTemplateSelector.BitmapTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding Path=Bitmaps/myBitmap}" Canvas.Left="{Binding Path=Location.X, Mode=TwoWay}" Canvas.Top="{Binding Path=Location.Y, Mode=TwoWay}" />
</StackPanel>
</DataTemplate>
</local:CustomTemplateSelector.BitmapTemplate>
.
<local:CustomTemplateSelector.ComplexBitmapTemplate >
<DataTemplate>
<Grid>
<StackPanel>
<Image Source="{Binding Path=TopLeftBitmapObj.myBitmap}" Canvas.Left="400" Canvas.Top="400" /> <-- Here I've tried to bind to another property, but even the 400 didn't work -->
</StackPanel>
<-- Here comes 3 more bitmaps -->
</Grid>
</DataTemplate>
</local:CustomTemplateSelector.ComplexBitmapTemplate>
</local:CustomTemplateSelector>
</ItemsControl.ItemTemplateSelector>
</ItemsControl>
Похоже, что ваши товары не могут быть размещены сразу на холсте? можете ли вы опубликовать скриншот визуального дерева, взятого из Snoop? –
Дважды проверьте свой путь привязки источника. – Afaq
@raptor - источник в порядке, как показывают изображения, но на 0,0, а не 400,400 .... – Dani