Ich habe eine DataGrid
und es hat eine DataGridCheckBox
Spalte. Und ich brauche das Kontrollkästchen wie dies in allen Reihen von DataGrid
zu präsentieren:DataGridCheckBoxColumn mit Text vor dem Kontrollkästchen
und finden Sie die XAML und entsprechenden Code, den ich habe:
<!--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>
-Code
//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();
}
}
}
Betriebsklasse
Das Problem, das ich habe, ist nur die letzte Zeile hinzufügen wird mit dem Text vor dem CheckBox
präsentiert und es sieht wie folgt aus:
Wie kann ich alle Zeilen bekommen die Nummer anzuzeigen, wie lange vor dem Kontrollkästchen?