どうやら、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>