显然,当使用 SharedSizeGroup 时,您不能使用星号 (*)。此处已对此进行了讨论: Grid's SharedSizeGroup and * sizing
不幸的是,在那次讨论中,他们并没有真正为问题提供可行的解决方案。
我想显示一个控件列表,每行一个控件,布局如下:
(名称)(输入文本框)(X 按钮)
它应该如下所示:
Description [ ] X
Name [ ] X
ID [ ] X
但相反,我得到
Description [] X
Name [] X
ID [] X
第 1 列的宽度应与最长的单词一样宽。第 2 列,即输入文本框,应拉伸以填充所有剩余空间 (*),但这不适用于前面讨论的 SharedSizeGroup。* 被视为自动,因此不拉伸。
有任何想法吗?这是 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>