2014-02-16 63 views
0

我有一個畫布,他需要多種類型的對象並在特定位置顯示它們。 大部分對象都有一個由「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> 
+1

聽起來像您的項目可能不會立即放在畫布上?你能發佈一個Snoop的Visual Tree截圖嗎? –

+0

還請仔細檢查您的源綁定路徑。 – Afaq

+0

@raptor - 源代碼沒問題,因爲圖像確實顯示,但是在0,0而不是400,400 .... – Dani

回答

0

請檢查以下內容:在調試模式下的Visual Studio

  1. 運行,檢查路徑錯誤(如猛禽sugested)
  2. 刪除 從內容展示的樣式(正如你所說,ComplexBitmap 不包含位置屬性...)
+0

會嘗試,但所有其他元素都有位置... – Dani