2013-04-27 23 views
1

我有一個包含網格的WPF窗口。它的設置看起來像一個跳棋板,所以當窗口大小調整時,我需要網格的正方形保持正方形。WPF按比例調整窗口大小,即。沒有伸展或扭曲?

我試過很多東西,但似乎沒有任何工作。我希望這只是獲得正確屬性的問題,而不是複雜的問題,但我需要它按比例調整任何一種方式。

我也不確定這是否會發生在網格或窗口中。我會承擔窗口,因爲這是調整大小的控制器,但我可能是錯的。 有什麼建議嗎?

的XAML窗口:

<Window x:Class="TicTacToeClient.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TicTacToeClient" 
    Title="Mini-Checkers V1.1" Height="600" Width="600" 
     MinHeight="200" MinWidth="200" MaxHeight="600" MaxWidth="600" > 
<DockPanel> 
    <Menu DockPanel.Dock="Top"> 
     <MenuItem Header="Game"> 
      <MenuItem Header="Set Ip Address" Name="IPAddressMenuItem"/> 
      <MenuItem Header="Set Name" Name="SetNameMenuItem"/> 
     </MenuItem> 
    </Menu> 
    <TextBlock DockPanel.Dock="Bottom" Text ="Status: " Name="GameStatusBar" /> 
    <local:TicTacToeBoard x:Name="GameBoard" /> 
</DockPanel> 

XAML網格:

<UserControl x:Class="TicTacToeClient.TicTacToeBoard" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="600" d:DesignWidth="600"> 

<Grid Name="MainGrid"> 
    <Grid.RowDefinitions> 
    .... 

回答

1

我建議DataBindingWidthGridHeight(反之亦然)。這將確保它總是按比例增長。事情如此簡單應該工作:

<Grid x:Name="Checkerboard" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="{Binding RelativeSource={RelativeSource Self}} Path=ActualHeight}"> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions>   
    <!-- Grid Contents --> 
</Grid> 

如果你想你的細胞都保持正方形,只要確保他們所有的*大小,所以他們將同樣展開。

0

或者,你可以把一個Viewbox裏侑網格Stretch="Uniform"

0

您可以嘗試封閉的GameBoardViewBoxStretch屬性設置爲UniformStretchDirection設置爲兩種。喜歡這個。它不會保持Form的縱橫比一致,但會保持你的GameBoard比例一致。

<Viewbox Stretch="Uniform" StretchDirection="Both"> 
    <local:TicTacToeBoard x:Name="GameBoard" /> 
</Viewbox> 
相關問題