显然,在使用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>
答案 0 :(得分:1)
那是因为你将Grid's HorizontalAlignment
设置为Left而不是Stretch。或者只是删除Grid's HorizontalAlignment
设置。正如@Highcore所说,在这种情况下你似乎不需要SharedSizeGroup
。