1

グリッドを含む 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>
    ....
4

3 に答える 3

1

私はあなたのを(またはその逆)に提案DataBindingします。これにより、常に比例して成長することが保証されます。これと同じくらい簡単なものが機能するはずです:WidthGridHeight

<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> 

また、セルをすべて正方形のままにしたい場合は、それらがすべて * サイズであることを確認してください。そうすれば、それらは均等に広がります。

于 2013-04-27T05:16:32.723 に答える
0

Viewboxまたは、グリッドをwithの中に入れることもできますStretch="Uniform"

于 2013-04-27T05:45:02.333 に答える
0

Property をに設定し、Bothに設定しGameBoardて で囲むことを試すことができます。このような。フォームのアスペクト比を均一に保つことはできませんが、GameBoard の比率を均一に保ちます。ViewBoxStretchUniformStretchDirection

<Viewbox  Stretch="Uniform" StretchDirection="Both">
    <local:TicTacToeBoard x:Name="GameBoard" />
</Viewbox>
于 2013-04-27T05:48:31.863 に答える