列表框水平对齐中网格中的复选框不起作用
本文关键字:复选框 不起作用 网格 中网 水平 对齐 列表 | 更新日期: 2023-09-27 18:20:27
我有一个DataGrid
,其中我使用RowDetailsTemplate
来显示所选DataGrid
项目的详细信息。显示的信息有点像"SubItems",所以我使用带有TextBlock
和两个CheckBox
控件的ListBox
来显示所有信息
控件使用Grid
进行定位,但我无法将CheckBox
控件集中在Grid
中。他们总是左对齐
我读过几个关于Stackoverflow的问题,但都没有解决。如何将两个CheckBox
控件集中到它们所分配的Grid.Column
?这是我的XAML代码:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<ListBox Name="lbDependencyDetails" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=DependencyView, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="55" />
<ColumnDefinition Width="55" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Grid.ColumnSpan="2"
Text="{Binding Path=Dependency.SoftwareName}"
Margin="{Binding Path=Margin}"
HorizontalAlignment="Left" />
<!--<GridSplitter HorizontalAlignment="Right" Grid.Column="1" Width="2" />-->
<CheckBox Grid.Column="2"
IsChecked="{Binding Path=Dependency.IsMarkedForReinstall, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
IsEnabled="False"
Width="55" />
<CheckBox Grid.Column="3"
IsChecked="{Binding Path=Dependency.IsMarkedForRepair, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
IsEnabled="False"
Width="55" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
由于ColumnDefinition
已将列的宽度设置为55,并且渲染复选框的宽度也为55,因此它将占用整个空间。因此,将ColumnDefinition
更改为*或从复选框中删除宽度。
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<ListBox Name="lbDependencyDetails" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=DependencyView, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Grid.ColumnSpan="2"
Text="{Binding Path=Dependency.SoftwareName}"
Margin="{Binding Path=Margin}"
HorizontalAlignment="Left" />
<!--<GridSplitter HorizontalAlignment="Right" Grid.Column="1" Width="2" />-->
<CheckBox Grid.Column="2"
IsChecked="{Binding Path=Dependency.IsMarkedForReinstall, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
IsEnabled="False"
Width="55" />
<CheckBox Grid.Column="3"
IsChecked="{Binding Path=Dependency.IsMarkedForRepair, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
IsEnabled="False"
Width="55" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
Grid.column
只是用于分配总宽度,因此,当您将整个宽度指定为复选框的宽度时,在加载UI时,它占用了整个空间。