Дилемма компоновки настольного приложения WPF

Я хочу разработать свое первое настоящее настольное приложение WPF. Прошло довольно много времени с момента моего последнего настольного приложения, которое было разработано с использованием .NET 2.0 и Windows Forms. Поскольку мне нужно разработать новое настольное приложение, и я могу воспользоваться преимуществами .NET 4.0, я бы очень хотел использовать WPF.

Я читаю онлайн-учебник и документацию, чтобы выбрать правильный способ сделать это, но я немного потерялся с новыми элементами управления.

В основном мне нужна панель, которая показывает некоторые текстовые поля и метки над сеткой данных. Как вы думаете, я могу добиться такого результата с управлением gridpanel? Спасибо.

Образец


person Duncan_McCloud    schedule 20.01.2012    source источник
comment
Если вы имеете в виду элемент управления Grid, да, это определенно подходящая панель для использования. Здесь вы должны использовать несколько вложенных сеток. В вашем представлении, показанном выше, вы можете использовать сетку с 6 строками, которая в своей 3-й строке содержит другую сетку с 4 строками и 4 столбцами для всех меток, текстовых полей и полей со списком. Пятая строка внешней сетки будет содержать DataGrid для данных таблицы.   -  person Clemens    schedule 20.01.2012


Ответы (2)


В WPF обычно используется несколько разных элементов управления. Управление композицией в WPF — важная функция, и вы многого добьётесь, зная и используя её преимущества.

Глядя на ваш экран, я делю его на две основные части:

Для этих двух я бы использовал сетку с двумя строками и одним столбцом. В области рисунков можно использовать DockPanel с выровненным по верху заголовком и другим содержимым Grid With Fill.

... и так далее, так далее.

Мой лучший совет — узнать о композиции WPF.

Надеюсь, я немного помог

person Luis Filipe    schedule 20.01.2012

Да, вам необходимо использовать сетку, с несколькими строками и столбцами.

См. пример на MSDN

        <Grid VerticalAlignment="Top" HorizontalAlignment="Left" ShowGridLines="True" Width="250" Height="100">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>

            <TextBlock FontSize="20" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="0">2005 Products Shipped</TextBlock>
            <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="0">Quarter 1</TextBlock>
            <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="1">Quarter 2</TextBlock>
            <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="2">Quarter 3</TextBlock>
            <TextBlock Grid.Row="2" Grid.Column="0">50000</TextBlock>
            <TextBlock Grid.Row="2" Grid.Column="1">100000</TextBlock>
            <TextBlock Grid.Row="2" Grid.Column="2">150000</TextBlock>
            <TextBlock FontSize="16" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="3">Total Units: 300000</TextBlock>
        </Grid>
person Csaba Fabian    schedule 20.01.2012
comment
Но рассмотрите вложенные сетки. Это значительно облегчит вам макет. - person Clemens; 20.01.2012