2013-08-06 1 views
0

입니다. 탭 안에 2 개의 열이있는 상황이 있습니다. 두 번째 열은 숨길 수 있습니다. 문제는 더 나은 사진과 함께 설명 :wpf 컨트롤을 사용하여 분할자를 사용하여 크기를 조정할 때 격자 셀을 채울 수 있지만 기본 너비는

2 열 표시하지 않고 초기 탭은 다음과 같이해야한다, 그래서 올바른 :

sss

그리고 채널 탭은과 같이 보일 것입니다 이는 또한 올바른 :

enter image description here

그러나 격자 분할자를 사용하여 두 번째 열의 크기를 조정할 때 목록 상자는 늘어나는 대신 고정 폭으로 유지됩니다. enter image description here

지금 2 탭 목록 상자의 크기를 조정 한 후 첫 번째 탭은 원치 않는 빈 영역입니다시킨 :

enter image description here

코드 나는 스트레칭 할 :

<TabControl x:Name="tcTabs" ItemsSource="{Binding Rooms, UpdateSourceTrigger=PropertyChanged}" Margin="5" BorderThickness="1" IsSynchronizedWithCurrentItem="True"> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="TabItem"> 
      <Setter Property="Header" Value="{Binding Name}" /> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="Auto"/> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="*"/> 
           <RowDefinition Height="22"/> 
          </Grid.RowDefinitions> 

          <ListBox ItemsSource="{Binding Messages}" DisplayMemberPath="Raw" Grid.Row="0" Grid.Column="0" BorderThickness="0" /> 
          <GridSplitter ResizeDirection="Columns" VerticalAlignment="Stretch" Width="3" /> 
          <ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Nick" Visibility="{Binding Type, Converter={StaticResource UserListVisibilityConverter}}" Grid.Row="0" Grid.Column="1" BorderThickness="1,0,0,0" BorderBrush="#FFBBBBBB" Width="130" /> 
          <TextBox Grid.Row="1" Grid.ColumnSpan="2" BorderThickness="0,1,0,0" BorderBrush="#FFBBBBBB" Height="22" /> 
         </Grid> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TabControl.ItemContainerStyle> 
</TabControl> 

이 문제를 어떻게 해결할 수 있습니까?

답변

0

먼저 GridSplitter를 자체 열에 넣습니다. 둘째, 최종 열에도 비례 사이징이 있는지 확인하십시오. 셋째, 가장 오른쪽에 고정 너비를 설정하지 마십시오 ListBox. 너비가 최소가되도록하려면 MinWidth을 설정하십시오. 기본적으로 사용자 목록을 전체 양식의 절반 폭을 만들고, 너무 서버 창에서 야해 경우에도 지금은 50 %의 빈 공간을 표시

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
    <RowDefinition Height="*"/> 
    <RowDefinition Height="22"/> 
</Grid.RowDefinitions> 

<ListBox ItemsSource="{Binding Messages}" DisplayMemberPath="Raw" Grid.Row="0" Grid.Column="0" BorderThickness="0" /> 
<GridSplitter Grid.Column="1" ResizeDirection="Columns" VerticalAlignment="Stretch" Width="3" /> 
<ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Nick" Visibility="{Binding Type, Converter={StaticResource UserListVisibilityConverter}}" Grid.Row="0" Grid.Column="2" BorderThickness="1,0,0,0" BorderBrush="#FFBBBBBB" MinWidth="130" /> 
<TextBox Grid.Row="1" Grid.ColumnSpan="3" BorderThickness="0,1,0,0" BorderBrush="#FFBBBBBB" Height="22" /> 
+0

: 그래서 당신의 XAML은 같을 것입니다. – sprocket12

+1

@MuhammadA, 아마도이 답변이 당신이 원하는 결과를주지는 못했지만 이것이 분명히가는 길입니다 ... 나는 켄트가 말한 것에 동의 할 것입니다. 어쩌면이 코드를 가져 와서 실험 해보아야합니다. 단지 '당신의 목적에 맞지 않습니다. – Sheridan

+0

좋아요. 나는 그것을 작동 시키려고 노력할 것입니다. 감사 – sprocket12

관련 문제