1

我无法正确对齐列表框的内容。我有以下 XAML。基本上,我试图展示一些列表框,每个列表框都在自己的标题下。我还附上截图。如您所见,只有具有最长 TextBlock 的 ListBox 的 X 按钮才能正确对齐。我试过 Horizo​​ntalContentAlignment="Stretch",但没用。我还仔细检查了我所包含的 ListBox、ListBoxItem 和 GroupBox 样式没有做任何奇怪的事情。我基本上已经删除了所有样式,问题仍然存在。有任何想法吗?我对任何想法持开放态度,包括改变我的 XAML。

<ItemsControl Grid.Row="0" ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <GroupBox Header="{Binding Path=CategoryName}">
            <ListBox Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="15" SharedSizeGroup="Col1"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="Col2"/>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="Col3"/>
                                <ColumnDefinition Width="11" SharedSizeGroup="Col4"/>
                            </Grid.ColumnDefinitions>

                            <Path Grid.Column="0" Visibility="{Binding Path=IsChecked, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}" Stroke="{StaticResource Green06Brush}" StrokeThickness="2" SnapsToDevicePixels="False" Data="M 1 6 L 4 9 L 10 1" Margin="0.6,0.6,0.6,0.6" ClipToBounds="true" StrokeEndLineCap="Flat" StrokeStartLineCap="Flat"/>

                            <TextBlock Grid.Column="1" Text="{Binding Path=Symbol}" HorizontalAlignment="Left" Margin="2,0,10,0"/>
                            <TextBlock Grid.Column="2" Text="{Binding Path=Name}" HorizontalAlignment="Left" Margin="0,0,10,0"/>

                            <fpp:ImageButton Grid.Column="3" RenderOptions.BitmapScalingMode="NearestNeighbor" Source="Images/Clear_X.png" MouseOverSource="Images/Clear_X_On.png" DisabledSource="Images/Clear_X_Disabled.png" HorizontalAlignment="Right" VerticalAlignment="Center" Click="ClickRemoveTicker"/>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ListBox>
        </GroupBox>
    </DataTemplate>
</ItemsControl.ItemTemplate>

原始截图

原始截图

更新截图

在此处输入图像描述

4

1 回答 1

0

问题是每个Grid都包含在一个项目容器中,并且该容器只会增长与其内容一样大。

尝试将<GroupBox Header…&gt;元素更改为:

<GroupBox Header…
          Width="{Binding ActualWidth,
              RelativeSource={RelativeSource FindAncestor, AncestorType=ItemsControl}}">

原则上,这应该将所有 item 的宽度设置为GroupBox等于ItemsControl自身的宽度。

你可能需要对Grids 做同样的事情,除了你会绑定到他们的GroupBox祖先。

现在所有Grids 的宽度都相同,按钮应该在右侧对齐。

于 2012-09-27T18:04:28.000 回答