16

私は現在WPFをいじっていますが、典型的なデータ入力ウィンドウ(20以上のテキストボックスなど)のレイアウトはどうなるのだろうと思います。

atm このようなグリッド オブジェクトを使用しています (基本サンプル)

    <Grid Margin="2,2,2,2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

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

            <Label Grid.Row="0" Grid.Column="0">Vorname:</Label>
            <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Surname, UpdateSourceTrigger=PropertyChanged}" ></TextBox>

            <Label Grid.Row="1" Grid.Column="0">Nachname:</Label>
            <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=ChristianName, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="2" Grid.Column="0">Strasse (Wohnsitz):</Label>
            <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=Street1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="3" Grid.Column="0">Ort (Wohnsitz):</Label>
            <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Path=Town1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="4" Grid.Column="0">Postleitzahl (Wohnsitz):</Label>
            <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=PostalCode1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="5" Grid.Column="0">Bundesland (Wohnsitz):</Label>
            <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Path=State1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="6" Grid.Column="0">Land (Wohnsitz):</Label>
            <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Path=Country1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="7" Grid.Column="0">Zusatz (Wohnsitz):</Label>
            <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding Path=AdditionalAdrInfo1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

    </Grid>

基本的にこれでレイアウトのニーズはすべて満たされますが、行 3 に新しいテキスト ボックスを追加するなど、何かを変更したい場合はどうすればよいでしょうか?

現在、3より大きいすべてのGrid.Rowプロパティを変更する必要がありますが、それは意図したWPFの方法ではありません!?

他の人は複雑なデータ入力ウィンドウをどのようにレイアウトしていますか?

ティア

4

4 に答える 4

5

個人的に、私はAutoGridの大ファンです:http://www.codeplex.com/wpfcontrib/Wiki/View.aspx? title = AutoGrid&referringTitle = Home

于 2008-11-25T17:39:42.347 に答える
3

ネストされたStackPanels を使用してこの問題を「解決」する人もいますが、私見では別の問題 (コードの肥大化) が発生します。これを解決する最善の方法は、子を列に連続して配置する独自のパネルを作成することだと思います。以前のプロジェクトでこれを行いましたが、多くの利点があります。

  • より読みやすく簡潔な XAML
  • XAML の保守が容易
  • より高速なパフォーマンス

使用法は次のようになりました。

<local:FieldPanel>
    <Label>Field 1:</Label>
    <TextBox/>

    <Label>Field 2:</Label>
    <TextBox/>

    <Label>Field 3:</Label>
    <TextBox/>
</local:FieldPanel>
于 2008-11-25T10:32:09.823 に答える
2

Karl Shifflett は、WPF の LOB フォームに対する優れたアプローチも提供しています

于 2008-11-25T12:17:54.277 に答える
1

ここにもう1つのフォームレイアウトがあります http://www.slideshare.net/ackava/ui-atoms-form-layout

于 2010-04-16T17:04:09.467 に答える