我有一个DataGrid
,它有一个DataGridCheckBox
专栏。我需要在所有行中显示这样的复选框DataGrid
:
以下是我拥有的 XAML 和相应的代码:
<!--MainWindow.xaml-->
<Window x:Class="DataGridColIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525"
Loaded="Window_Loaded">
<Window.Resources>
<Style x:Key="RowNumberCheckBox" TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="FlowDirection" Value="RightToLeft"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Content">
<Setter.Value>
<Grid FlowDirection="LeftToRight">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="5"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Number, StringFormat={}{0:00}}"/>
</Grid>
</Setter.Value>
</Setter>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<DataGrid Grid.Row="0"
Name="DataGridTesting"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="#"
Binding="{Binding Exclude, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
ElementStyle="{StaticResource RowNumberCheckBox}"
EditingElementStyle="{StaticResource RowNumberCheckBox}">
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
<Button Grid.Row="1"
Name="AddItems"
Content="Add Item"
Click="AddItems_Click"/>
</Grid>
</Window>
代码
//MainWindow.xaml.cs
using System.Collections.Generic;
using System.Windows;
namespace DataGridColIssue
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public int CurrentOperation;
public List<Operation> Operations;
public MainWindow()
{
InitializeComponent();
Operations = new List<Operation>();
CurrentOperation = 0;
}
private void AddItems_Click(object sender, RoutedEventArgs e)
{
CurrentOperation++;
Operations.Add(new Operation(CurrentOperation));
DataGridTesting.Items.Refresh();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataGridTesting.ItemsSource = Operations;
DataGridTesting.Items.Refresh();
}
}
}
操作类
namespace DataGridColIssue
{
public class Operation
{
public bool Exclude { get; set; }
public int Number { get; set; }
public Operation(int Number)
{
this.Number = Number;
}
}
}
我遇到的问题是只有最后一个添加行显示在前面的文本中CheckBox
,它看起来像这样:
如何让所有行在复选框之前也显示数字?