2

だから、Windowsデスクトップ用のVS 2012でwpfアプリケーションを扱うのは初めてです。ウィンドウに背景画像を入れました。そのウィンドウに 3 つのテキスト ボックスとボタンを配置しました。アプリケーションを起動してマウスでウィンドウのサイズを変更したり、全画面表示にしたりすると、ウィンドウのサイズは変更されますが、テキストボックスとボタンは以前と同じ位置にとどまり、実際には収まりません。そのデザイン。私が十分に明確だったことを願っています。ご協力ありがとうございました。

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="768" Width="1366
    ">

<Grid RenderTransformOrigin="0.495,0.498" Margin="0,10,0,0">
    <Grid.Background>
        <ImageBrush ImageSource="slike/education_board.jpg"/>
    </Grid.Background>
    <Grid HorizontalAlignment="Left" Height="209" Margin="209,211,0,0"        VerticalAlignment="Top" Width="396">

    <TextBox x:Name="tockeMaturaTextBox" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Bottom" Width="120" TextChanged="TextBox_TextChanged_1" IsManipulationEnabled="True" Margin="10,0,0,176"/>
    <TextBox x:Name="tretjiLetnikTextBox" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.899,3.574" Margin="10,63,0,0"/>
    <TextBox x:Name="cetrtiLetnikTextBox" HorizontalAlignment="Left" Height="23" Margin="10,115,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="361,224,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
    <TextBlock x:Name="skupneTockeTextBlock" HorizontalAlignment="Left" Margin="323,133,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"      RenderTransformOrigin="-0.375,0.338" Height="73" Width="113"/>

    </Grid>
</Grid>
</Window>
4

1 に答える 1

4

以下の XAML を試してください。

    <Grid Margin="0,10,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="211"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.Background>
            <ImageBrush ImageSource="slike/education_board.jpg"/>
        </Grid.Background>
        <StackPanel Grid.Row="1" Grid.Column="1" >

            <TextBox x:Name="tockeMaturaTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Bottom" Width="120" TextChanged="TextBox_TextChanged_1" IsManipulationEnabled="True" />
            <TextBox x:Name="tretjiLetnikTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" />
            <TextBox x:Name="cetrtiLetnikTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
            <Button x:Name="button" Margin="5" Content="Button" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="75" Click="button_Click"/>
            <TextBlock x:Name="skupneTockeTextBlock" Margin="5" HorizontalAlignment="Left"  TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"       Height="73" Width="113"/>

        </StackPanel>
    </Grid>

WPF は、コンテナー ベースの (相対) レイアウト システムを使用します。親グリッドに対してマージンを正確に定義することにより、テキストボックスを絶対位置に配置していました。StackPanel上記の例では、グリッドの内側にある に配置されています。

余分な余白と絶対的な幅と高さがあるため、どのような最終結果が得られるかを判断するのは困難ですが、上記の XMAL を使用すると、それに近づくはずです。グリッドの行と列の相対的なサイズを変更して、必要なものを得ることができます。または の構造を完全に再定義しGridます。

WPF に関する優れたチュートリアルは、基本的な概念を理解するためのものだと思います: Silverlight/WPF Introduction。これは Silverlight 向けですが、レイアウトの原則は WPF と同じです。実際のトレーニングは動画の8:17から始まります。

EDIT 魔法のようにコンテンツを拡大および縮小するには、以下のコードを使用します。

    <Grid Margin="0,10,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <Grid.Background>
            <ImageBrush ImageSource="slike/education_board.jpg"/>
        </Grid.Background>
        <Viewbox Grid.Row="1" Grid.Column="1" >
            <StackPanel>
                <TextBox x:Name="tockeMaturaTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Bottom" Width="120" TextChanged="TextBox_TextChanged_1" IsManipulationEnabled="True" />
                <TextBox x:Name="tretjiLetnikTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" />
                <TextBox x:Name="cetrtiLetnikTextBox" Margin="0,5" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
                <Button x:Name="button" Margin="5" Content="Button" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="75" Click="button_Click"/>
                <TextBlock x:Name="skupneTockeTextBlock" Margin="5" HorizontalAlignment="Left"  TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"       Height="73" Width="113"/>
            </StackPanel>
        </Viewbox>
    </Grid>
于 2013-03-06T19:09:06.257 に答える