0

私のアプリケーションでは、Window. 左側のメニュー、ヘッダー、およびコンテンツの場所が含まれています。

このコンテンツは動的にロードされています -UserControlそこに a が置かれています。これらUserControlsは様々です。単なるTextBlockページから非常に複雑なページまで。すべてのコンテンツが確実に表示されるようにするには、ScrollViewer(つまり、MyWindow.xaml で) ラップする必要があります。コンテンツに a を入れる必要があるまで、すべて正常に機能ListViewします。

多かれ少なかれ、コードは次のようになります。

<ScrollViewer> // this is the wrapping viewer actually it's in a different file
    <UserControl>
        ......
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="10*"/>
                <ColumnDefinition Width="20*"/>
            </Grid.ColumnDefinitions>
            <ListView  ItemsSource="{Binding Entities}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Style="{StaticResource Value}" Text="{Binding WorkOrderNumber}"/>
                            <TextBlock Style="{StaticResource Value}" Text="{Binding ActionType}"/>
                            <TextBlock Style="{StaticResource Value}" Text="{Binding StartDate}"/>
                            <TextBlock Style="{StaticResource Value}" Text="{Binding StopDate}"/>
                            <Separator/>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
            <Whatever.. Grid.Row="0" Grid.Column="1"/>
            <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Style="{StaticResource CustomButton}" Content="Previous" />
                <Button Style="{StaticResource CustomButton}" Content="Current" />
                <Button Style="{StaticResource CustomButton}" Content="Next" />
            </StackPanel>
        </Grid>
    </UserControl>
</ScrollViewer>

その結果、リストボックスにスクロールバーがなくなり、高くなります。スクロールバーは、ウィンドウのスクロールビューアのみにあります。

だから私のUserControlで私が欲しい:

  • ボタンは常に一番下にあります
  • 左のスペース全体を埋めるためのリストボックス(ウィンドウに合わせてサイズも変更します)
  • リストボックスの高さのハードコーディングを避ける

それは可能ですか?

4

1 に答える 1

0

Grid の代わりに DockPanel を使用します。DockPanel には LastChhildFill というプロパティがあります。デフォルトでは true です。ListBox を最後の子に設定すると、すべてのスペースが埋められます。

<ScrollViewer>
    <DockPanel>
        <StackPanel DockPanel.Dock="Bottom"
                    Orientation="Horizontal"
                    HorizontalAlignment="Center">
            <Button Style="{StaticResource CustomButton}"
                    Content="Previous" />
            <Button Style="{StaticResource CustomButton}"
                    Content="Current" />
            <Button Style="{StaticResource CustomButton}"
                    Content="Next" />
        </StackPanel>
        <ListView >
        </ListView>
    </DockPanel>
</ScrollViewer>

しかし、この設定ではボタンが消えてしまいます。つまり、それらは常に ListBox の一番下にあります。したがって、 ScrollViewerを削除する必要があるかもしれません。

于 2012-12-28T05:08:43.480 に答える