【发布时间】:2014-01-24 10:42:07
【问题描述】:
显然,当使用 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>
【问题讨论】:
-
第二列:
<ColumnDefinition/>将占用所有可用空间。在这种情况下,您不需要 sharedsizegroup,也不需要Width="*" -
试过了。我仍然遇到上述问题。它正在缩小到只占用与空文本框一样多的空间,这并不多。换句话说,它就像第一列一样。
标签: wpf xaml itemscontrol itemtemplate sharedsizegroup