2012-07-18 2 views
0

첫 번째 행에 고정 된 높이를 가진 버튼이 있고 두 번째 (및 마지막) 행에 포함 된 컨트롤이있는 컨트롤이 있습니다. ListView 그런 다음 위의 메뉴와 사용자 컨트롤 만 포함하는 기본 화면이 있습니다. ListView의 크기를 윈도우의 최대 값으로 지정하고 싶습니다. 즉, 창이 최대화되면 ListView가 커지므로 창 크기가 작을 경우 ListView (세로 스크롤을 통해 탐색하는 데 도움이됩니다. 항목). 창 :WPF의 표 안에있는 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> 

당신이 좀 도와 주 시겠어요을

이 내가 그 일을하고 어떻게?

감사합니다.

답변

2

방금 ​​User Control과 Listview 도킹이 제대로 작동하는지 검사했습니다. 배경색을 사용하여 디자이너의 레이아웃을 확인할 수 있습니다. 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 또는 Grid를 사용하십시오.

0

안녕하세요 GridviewColumn에서 Width = "Auto"를 제거하십시오. 이게 도움이되기를 바랍니다.

+0

문제는 너비가 아니라 높이와 관련이 있습니다. 죄송합니다 ... – jpnavarini

+0

어디에서 창에 컨트롤을 적용합니다. 당신이 거기에 높이 및 너비 속성을 UserControl setted 수 있어야합니다 확인해야합니다. 그리고 창 높이 = "별"및 열 너비 = "별"함께 눈금이이 컨트롤을 묶습니다. – ethicallogics

관련 문제