我有一個畫布,他需要多種類型的對象並在特定位置顯示它們。 大部分對象都有一個由「Setter」設置的Location屬性,它的效果很好。訪問在模板中有一個setter的屬性
我有一個複雜的對象 - 從4個位圖組裝而成。 我希望能夠使用canvas.top和canvas.left來設置每個位圖位置,但不能使用setter中的位置(它們沒有它),而是使用它們自己的位置屬性。
這是代碼。
我的問題是,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的Visual Tree截圖嗎? –
還請仔細檢查您的源綁定路徑。 – Afaq
@raptor - 源代碼沒問題,因爲圖像確實顯示,但是在0,0而不是400,400 .... – Dani