0

最初の行に固定の高さのボタンがいくつか含まれ、2番目(および最後)の行にListViewが含まれるグリッドであるコントロールがあります。次に、メニューと上記のこのユーザーコントロールのみを含むメイン画面があります。ListViewのサイズをウィンドウの最大値にしたいと思います。つまり、ウィンドウを最大化すると、ウィンドウが小さい場合はListViewが大きくなり、ListViewも大きくなります(垂直方向のスクロールでナビゲートしやすくなります)。アイテム)。

これが私がやっている方法です:ウィンドウ:

<Window x:Class="TestUI.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Width="auto" Height="auto"
    MinHeight="300" MinWidth="300"
    Title="Test"
    DataContext="{Binding MainViewModel, Source={StaticResource Locator}}" >

<StackPanel Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    <DockPanel>
        <Menu DockPanel.Dock="Top" >
            <MenuItem Header="Item 1" Command="{Binding Command1}"/>
            <MenuItem Header="Item 2" Command="{Binding Command2}"/>
            <MenuItem Header="Item 3" Command="{Binding Command3}"/>
        </Menu>
    </DockPanel>
    <DockPanel LastChildFill="True">
        <ScrollViewer Content="{Binding Content}" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" DockPanel.Dock="Bottom" />
    </DockPanel>
</StackPanel>
</Window>

ユーザーコントロール:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="35" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0" Margin="5, 5, 5, 5" Orientation="Horizontal">
        <Button Content="New" Width="60" Command="{Binding NewCommand}"/>
        <Button Content="Remove" Width="60" Margin="10, 0, 0, 0" Command="{Binding RemoveCommand}" />
    </StackPanel>
    <DockPanel Grid.Row="1" Margin="5,5,5,5" LastChildFill="True" HorizontalAlignment="Stretch">
        <ListView x:Name="ListView" SelectionMode="Single" DockPanel.Dock="Top" ItemsSource="{Binding Entities}" SelectedItem="{Binding SelectedEntity}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" VerticalAlignment="Stretch">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="auto" Header="Product" DisplayMemberBinding="{Binding Description}"/>
                </GridView>
            </ListView.View>
        </ListView>
    </DockPanel>
</Grid>

手伝っていただけませんか?

ありがとうございました!

4

2 に答える 2

2

ユーザーコントロールを調べたところ、Listviewドッキングは正常に機能しています。背景色を使用して、デザイナーでレイアウトを確認できます。リストビューの背景を青に設定すると、使用可能なスペースを使用していることがわかります。

問題はメインフォーム、特にStackpanelのレイアウトにあると思います。これらはレイアウトの問題で有名であり、私が言えることから、これらは必要ありません。複数のドックパネルではなく、DockPanelを高レベルのコンテナとして使用します。(これが彼らの目的です)

<DockPanel>
    <Menu DockPanel.Dock="Top" >
        <MenuItem Header="Item 1" Command="{Binding Command1}"/>
        <MenuItem Header="Item 2" Command="{Binding Command2}"/>
        <MenuItem Header="Item 3" Command="{Binding Command3}"/>
    </Menu>
    <ScrollViewer Content="{Binding Content}" VerticalScrollBarVisibility="Disabled"
         HorizontalScrollBarVisibility="Disabled" DockPanel.Dock="Fill" />
</DockPanel>

これにより、メニューがパネルの上部に配置され、ユーザーコントロール(想定)を含むスクロールビューアーが残りの使用可能なスペースを使い果たすようになります。

スタックパネルは、エリア内にアイテムを配置する場合にのみ適しています。レイアウトを使用して使用可能なスペースを割り当てる場合は、DockPanelsまたはGridsを使用します。

于 2012-07-18T22:09:40.057 に答える
0

こんにちはGridviewColumnからWidth="Auto"を削除します。これがお役に立てば幸いです

于 2012-07-18T17:17:57.320 に答える