1

どうやら、SharedSizeGroup を使用する場合、スター サイズ (*) は使用できません。これはここで議論されています: グリッドの SharedSizeGroup と * sizing

残念ながら、その議論では、問題に対する実行可能な解決策を実際には提供していません。

次のレイアウトで、行ごとに 1 つのコントロールのリストを表示したいと思います。

(名前)(入力欄)(×ボタン)

次のようになります。

Description [                     ] X
Name        [                     ] X
ID          [                     ] X

しかし、代わりに私は得ています

Description [] X
Name        [] X
ID          [] X

列 1 は、最も長い単語と同じ幅にする必要があります。列 2 のエントリ テキスト ボックスは、残りのスペース (*) をすべて埋めるために拡大する必要がありますが、前述のように SharedSizeGroup では機能しません。* は Auto として扱われているため、非ストレッチです。

何か案は?XAML は次のとおりです。

        <ItemsControl ItemsSource="{Binding FilterList}" Margin="5,0,5,0" Grid.IsSharedSizeScope="True">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="5,0,5,0" HorizontalAlignment="Left">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="Column0" Width="Auto"/>
                            <ColumnDefinition SharedSizeGroup="Column1" Width="*"/>
                            <ColumnDefinition SharedSizeGroup="Column2" Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Label Grid.Column="0" Content="{Binding FilterLabel}" HorizontalAlignment="Right"/>
                        <TextBox Grid.Column="1" Height="20" Text="{Binding FilterString, UpdateSourceTrigger=PropertyChanged}"/>
                        <Button Grid.Column="2" Content=" X " Margin="2" Visibility="{Binding ClearFilterVis}" Command="{Binding ClearFilterCommand}"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
4

1 に答える 1