wpf макет нижнего колонтитула - PullRequest
0 голосов
/ 04 декабря 2009

Мой нижний колонтитул в настоящее время состоит из метки и ItemsControl. Он должен быть ниже 2 элементов управления DataGrid, которые похожи в том, что они оба содержат столбец фиксированной ширины для каждого дня недели и его конца (для этого есть итоги для ItemsControl в нижнем колонтитуле).

Я пытаюсь решить вопрос о выравнивании, которое, кажется, проще всего просто правильно выровнять столбцы дня. Я думал, что мог бы использовать DockPanel в качестве контейнера и Dock = Right на ItemsControl, как показано ниже, но все начинается слева после метки.

<DockPanel x:Name="columnTotals" DockPanel.Dock="Bottom" >

    <Label ... DockPanel.Dock="Left" Width="Auto">Grand Totals</Label>

        <ItemsControl DockPanel.Dock="Right"
            ItemsSource="{Binding Path=TotalTimeViewModels, Mode=OneWay}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>

    </DockPanel>

Итак, мой основной вопрос в этом посте: почему ItemsControl на самом деле не стыкуется справа от родительского контейнера (в настоящее время также DockPanel )

Приветствия
Berryl

Второстепенный и более сложный вопрос - как выровнять нижний колонтитул со столбцами DataGrid. Моя главная мысль на сегодняшний день - использовать тот факт, что последние столбцы всегда одинаковы, а их ширина фиксирована.

Я могу выровнять вещи со StackPanel, используя FlowDirection = RightToLeft и 8 дочерних меток (в отличие от одного ItemsControl), но это имеет недостатки, заключающиеся в том, что XAML раздутый и требует, чтобы текст был RightToLeft, чтобы обратить поток контейнера - смотреть на это грязно и запутанно.

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

Опять же, спасибо за чтение и приветствия,
Berryl

1 Ответ

0 голосов
/ 05 декабря 2009

Этот код решает проблему выравнивания с помощью DockPanel:

<DockPanel LastChildFill="True" DockPanel.Dock="Bottom" >

    <ItemsControl DockPanel.Dock="Right" Width="Auto" ... />

    <Label ... Width="Auto">Grand Totals</Label>

</DockPanel>

Приветствия
Berryl

...