0

タブ内に 2 つの列がある状況があります。2 列目は非表示にすることができます。問題は写真でよりよく説明されています:

2 番目の列が表示されていない最初のタブは次のように表示されるはずなので、正しいです。

sss

そして、チャンネルタブも正しいように見えるはずです:

ここに画像の説明を入力

しかし、グリッドスプリッターを使用して2番目の列のサイズを変更すると、リストボックスは引き伸ばされるのではなく固定幅のままになります。伸ばしたい:

ここに画像の説明を入力

2番目のタブリストボックスのサイズを変更した後、最初のタブには不要な空白の領域があります:

ここに画像の説明を入力

コード :

<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>

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

まず、GridSplitter を独自の列に配置します。次に、最終的な列にも比例したサイズが設定されていることを確認してください。第三に、一番右の に固定幅を設定しないでくださいListBox。最小幅にしたい場合は、 を設定しMinWidthます。したがって、XAML は次のようになります。

<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" />
于 2013-08-06T11:15:53.437 に答える