Oke di sini: sumber xaml yang dimaksud, di ucPacketPrinting.xaml
<DataGridCheckBoxColumn
x:Name="clmPrint"
Binding="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Header="Print"
HeaderStyle="{StaticResource DataGridColumnHeaderStyle2}" IsReadOnly="True">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="IsEditing" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</DataGridCheckBoxColumn.CellStyle>
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox">
<Setter Property="IsChecked" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</DataGridCheckBoxColumn.ElementStyle>
<DataGridCheckBoxColumn.EditingElementStyle>
<Style TargetType="CheckBox">
<Setter Property="IsChecked" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</DataGridCheckBoxColumn.EditingElementStyle>
</DataGridCheckBoxColumn>
Selanjutnya, inilah Properti kelas objek vmPacketOrder. Saya yakin kolom clmPrint terikat dengan ini
private bool isSelected = false;
…
public bool IsSelected
{
get => isSelected;
set {
Set(value, x => isSelected);
}
}
Terakhir, inilah vmPacketPrinting yang dimaksud. Ini menggunakan kumpulan objek vmPacketOrder. rowCountSelected terikat ke kotak teks yang menampilkan jumlah baris yang dipilih. Saya telah menyelesaikan beberapa bagian lain, satu-satunya yang tersisa adalah memperbarui properti rowCountSelected ketika kotak centang di kolom dicentang. Saya kira saya bisa memeriksa properti isSelected untuk setiap item dalam koleksi pada pengatur waktu dan memperbaruinya seperti itu, tetapi akan jauh lebih baik jika saya bisa memiliki acara yang memperbaruinya ketika kotak centang dicentang atau tidak dicentang. Saya belum menemukan cara untuk melakukan ini sejauh ini.
private ObservableCollection<vmPacketOrder> packetOrders;
…
public ObservableCollection<vmPacketOrder> PacketOrders
{
get {
return packetOrders;
}
set => Set(value ?? new ObservableCollection<vmPacketOrder>(), x => packetOrders);
}
…
public string rowCountSelected { get; set; } = "0";