2010-06-30 28 views
1

我有以下結構XAML:如何調整畫布到另一個畫布的矩形邊界?

<Grid> 
    <ItemsControl x:Name="Items" ItemsSource="{Binding Path=Pages}" Grid.Row="0" Grid.Column="0"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 

    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
     <!-- Display a white page for each page item --> 
     <local:PageView Margin="0, 25, 0, 0" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    </ItemsControl> 

    <!-- Layer used for displaying preview of drawn shape --> 
    <local:PreviewLayer x:Name="PreviewLayer" Grid.Row="0" Grid.Column="0"/> 
</Grid> 

客戶將預覽層上的形狀來描繪,讓假設的矩形。一旦完成繪圖,形狀將被添加到形狀下方的頁面中。

我的問題是生成的矩形的X,Y是在PreviewLayer的座標系中。如何將一個矩形的邊界從PreviewLayer轉換爲PageView?

我目前使用獲得所需的瀏覽量(該page變量是從其他地方獲得)

UIElement pageView = (UIElement)this.Items.ItemContainerGenerator.ContainerFromItem(page); 

但我不知道如何讓網頁瀏覽的座標返回。使用Canvas.GetLeft(pageView)返回NaN

如何獲得pageView界限?

回答

1

我能夠通過使用TranslateToPoint找出它。起初,它不工作,直到我認爲ContainerFromItem返回一個物品的容器(這是邏輯的,如果你讀的功能的名稱,但我想這超過了我的頭)。

獲取容器的第一個孩子返回了我需要的元素TranslateToPoint