2009-08-25 117 views
2

有沒有辦法縮放視圖框內容,一個控件的excpet? 我有一個網格的視框,並在這個網格中我有一些控件,我試圖放大視圖中的所有控件,除了一個,是否有可能?WPF視圖框縮放

非常感謝, 聖保羅

回答

5

您可以使用一個網格,圖層添加到您的佈局。這樣,您可以縮放一組項目,並將另一組項目放大。

<Grid> 
    <Viewbox> 
    <!-- Controls to zoom --> 
    </Viewbox> 
    <!-- Control to exclude from zoom --> 
</Grid> 

視圖框和XAML中其他控件的順序取決於哪一層出現在頂部。

如果這樣做並不完全符合您的要求,請發表評論,我會重新回答答案。

編輯您希望未放大的控件相對於(0,0)Viewbox的位置。在這種情況下會發生這種情況,因爲網格的兩個子節點都在單元格(0,0)中,這意味着它們的左上角對齊。你能舉一個你在XAML中有什麼樣的例子嗎?它有什麼問題(可能是編輯你的原始問題)?

下面是一些XAML嘗試:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    Background="Green"> 
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <Viewbox> 
     <Rectangle Fill="Yellow" Width="10" Height="10" /> 
    </Viewbox> 
    <TextBlock>I am positioned at (0,0)</TextBlock> 
    <TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock> 
    </Grid> 
</Page> 

這給了這樣一個佈局:

http://img20.imageshack.us/img20/2045/layout1m.png

但需要注意的是,當高度降低,電網變得比視圖框更寬,所以內容如下所示:

http://img20.imageshack.us/img20/9397/layout2i.png

我想這不是你想要的。在這種情況下,您使用的畫布,去這樣的事情:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    Background="Green"> 
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <Viewbox> 
     <Rectangle Fill="Yellow" Width="10" Height="10" /> 
    </Viewbox> 
    <Canvas> 
     <TextBlock>I am positioned at (0,0)</TextBlock> 
     <TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock> 
    </Canvas> 
    </Grid> 
</Page> 

,看起來像這樣:

http://img20.imageshack.us/img20/6743/layout3i.png