我无法正确对齐列表框的内容。我有以下XAML。基本上,我试图显示一些ListBoxes,每个ListBox都在自己的标题下。我还附上了截图。如您所见,只有具有最长TextBlock的ListBox才能正确对齐其X按钮。我试过HorizontalContentAlignment =“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>
原始屏幕截图
更新了ScreenShot
答案 0 :(得分:0)
问题是每个Grid
都包含在一个项容器中,并且该容器只会增加其内容的大小。
尝试将<GroupBox Header…>
元素更改为:
<GroupBox Header…
Width="{Binding ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType=ItemsControl}}">
原则上,这应该将所有项目GroupBox
es的宽度设置为等于ItemsControl
本身的宽度。
你可能需要对Grid
做同样的事情,除非你绑定到他们的GroupBox
祖先。
现在所有Grid
的宽度相同,按钮应排在右侧。