2009-07-11 40 views

回答

25

如果在調整窗口大小時(例如最大化),需要按比例縮放窗口的內容時,Viewbox非常有用。在這個簡約的頁面中

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Viewbox> 
     <StackPanel> 
      <TextBlock FontSize="14">Example</TextBlock> 
      <Border Background="Aqua" Width="100" Height="100"></Border>      
     </StackPanel> 
    </Viewbox> 
</Window> 

你有一個TextBlock和一個彩色邊框垂直堆疊;如果你啓動了這個xaml,那麼窗口的大小將是300x300,TextBlock的字體大小是14,彩色邊框的大小是100x100。如果您重新調整窗口大小,則會相應地顯示TextBlock和Border縮放比例(因此它們不會超出您在xaml中指定的大小),並保持相對比例。在這方面,如果你需要一個窗口,其內部組件佈局看起來總是獨立於最終分辨率,它將顯示出來(重要的是寬高比,思想),那麼Viewbox就非常有用。這顯然適用於您將放置在Viewbox中的任何內容(例如,我們有一個包含視頻和3D視圖的應用程序)。請注意,在Visual Studio 2008中,您無法在設計器中看到Viewbox的內容。

希望得到這個幫助。

0

待辦事項你的意思是你想讓窗口填滿整個屏幕?做到這一點的最簡單方法(不會導致更多的頭痛)是最大化窗口。

w.WindowState = WindowState.Maximized; 

編輯:

可縮放的窗口布局需要您避免使用Visual Studio中的XAML編輯器!其實你可以在編輯器裏做,但它很難。

容易得多手工編寫的XAML:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="0" Grid.Row="0">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox> 
    <Label Grid.Column="0" Grid.Row="1">First Name</Label> 
    <TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox> 
</Grid> 

這將大小以適合窗口,雖然可能看起來很奇怪,因爲行和列在默認情況下得到各一半的空間。您可以覆蓋這使他們具有高度由它們的內容,而不是決定:

<RowDefinition Height="Auto"/> 

它也可以幫助把利潤上的一些控制,空間出來:

<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox> 
+0

哦不,我希望這是我的問題... 我希望內容能夠縮放到窗口大小。 – 2009-07-11 20:23:00

+0

我沒有與編輯合作... 你不明白我,我想內容增長...不擴散.. – 2009-07-13 19:13:24

+0

你將不得不編輯你的問題,我認爲。你的意思是你真的想要每一個細節都放大,字體大小呢? – 2009-07-13 19:24:36

2

如果你想擴展真正的一切,包括字體大小,你可能會對你的內容應用一個縮放轉換,並將它的X和Y值綁定到窗口的寬度和高度。然後,您還需要一個價值轉換器將其轉換爲適當的比例。

1

如果要將所有內容都縮放到窗口大小,只需將所有內容放入Viewbox控件中。