0

注: これは、私が WPF を使用するのは初めての 1 つです。
特定のコントロールを配置しようとしています。今のところボタンとしましょう。右下隅にあります。しかし、アプリケーションをデバッグすると、下と右に 8 ピクセルがありません。何が起こったかを示すために2枚の写真を添付し​​ます。

ボタンを所定の位置に保つにはどうすればよいですか?

私のXAMLコード:

<Window x:Class="Plugin_Manager.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Plugin Manager" Height="350" Width="525" Loaded="Window_Loaded_1">
<Grid x:Name="GridMain">
    <Button Content="Refresh" Margin="432,288,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="75"/>
    <ListView HorizontalAlignment="Left" Height="273" Margin="10,10,0,0" VerticalAlignment="Top" Width="497">
        <ListView.View>
            <GridView>
                <GridViewColumn/>
            </GridView>
        </ListView.View>
    </ListView>

</Grid>

ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

7

レイアウトの使用を選択した場合は、 をGrid介してオブジェクトを配置しないようにしてくださいMarginMarginウィンドウ内の特定のポイントにオブジェクトを移動するのではなく、オブジェクトの周りにバッファーを作成するために使用する必要があります。レイアウト マネージャーの機能を活用してください。

Gridこれは、あなたが探していることを行う例です。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <ListView Grid.Row="0" />

    <Button Grid.Row="1"  HorizontalAlignment="Right" Content="Push Me" />

</Grid>

また、WPFのLayout Managerについても調べます。いくつかあります。それぞれに独自の長所と短所があります。

これがDockPanelバージョンです。

<DockPanel>
    <Button DockPanel.Dock="Bottom"  HorizontalAlignment="Right" Content="Push Me" />
    <ListView />
</DockPanel>

ボタンとウィンドウ クロムの間にバッファを作成するには、いくつかの方法があります。

  1. <Grid Margin="10">すべてのコンテンツとウィンドウ クロームの間に 10 ピクセルのスペースを適用します。
  2. <Grid Margin="0,0,10,10">すべてのコンテンツをインデントしますが、右と下のみです。
  3. <Grid Margin="10,0,10,10">上部を除くすべてのインデント (私は通常、これを別のマージン値で行います)。
  4. <Button Margin="0,0,10,10">クロムからボタンのみをインデントします(これはコメントの質問に対する直接の回答です)。

    • Grid上記をDockPanel2 番目の例、または使用している他のレイアウト マネージャーに置き換えます。

使いやすさに関する補足: 確認ボタン (ボタンは [OK]/[キャンセル] タイプのボタンであると想定しています) は、コンテンツの残りの部分とは異なる方法でインデントするべきではありません。右マージンに接するすべてのコントロールは、同じポイントに配置する必要があります (つまり、すべてのコントロールの右側に垂直線を引くことができます)。

したがって、質問の例を使用すると、リストボックスがそうでないときに、ボタンを右に10ピクセルインデントしないでください。物事を一列に並べておくと、アプリケーションの全体的な外観が向上します。

(これで、私の「ユーザビリティとルック アンド フィールが重要です」というサイド ノートを終了します) :)

于 2013-05-01T19:09:09.400 に答える
1
<Button VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5"/>
于 2013-05-01T19:01:10.467 に答える
0

いくつかのコード例が役立ちます。以下に示すように、ボタンに xaml の配置を使用してみてください。ボタンの余白が 0 であることを確認します。

<Button Margin="0" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>

サンプル コードを見ると、おそらくそれを引き起こしているのは、マージンと配置です。

役立つかもしれないいくつかのポインタ。大きな余白を使用してコントロールを配置する代わりに、グリッドで列と行の定義を操作する方がはるかに簡単であることがわかりました。このようにして、グリッドを使用してコントロールを整列させることができ、ウィンドウのサイズを変更すると適切にサイズ調整されます。WPF での新しい冒険に役立つことを願って、例を添付しました。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="150"/>
        <ColumnDefinition Width="150"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Grid.Row="0" Text="Version Date" Margin="3" VerticalAlignment="Center"/>
    <TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding DateSubmitted}" Margin="3"/>
    <TextBlock Grid.Column="1" Grid.Row="0" Text="Report" Margin="3" VerticalAlignment="Center"/>
    <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding ReportName}" Margin="3"/>
</Grid>
于 2013-05-01T19:03:28.363 に答える