1

显然,当使用 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>
4

1 回答 1

1

那是因为您设置Grid's HorizontalAlignment为 Left 而不是 Stretch。或者只是删除Grid's HorizontalAlignment设置。SharedSizeGroup正如@Highcore 所说,在这种情况下您似乎不需要。

于 2014-01-07T00:54:19.210 回答