Mở rộng trên khái niệm DataGridCell được lưu ý ở trên, đây là cách chúng tôi sử dụng để làm việc.
... XAML ...
<DataGrid Grid.ColumnSpan="2" Name="dgMissingNames" ItemsSource="{Binding Path=TheMissingChildren}" Style="{StaticResource NameListGrid}" SelectionChanged="DataGrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTemplateColumn CellStyle="{StaticResource NameListCol}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Checked, UpdateSourceTrigger=PropertyChanged}" Name="theCheckbox" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=SKU}" Header="Album" />
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" "/>
<DataGridTextColumn Binding="{Binding Path=Pronunciation}" Header="Pronunciation" />
</DataGrid.Columns>
</DataGrid>
TheMissingChildren là một đối tượng ObservableCollection có chứa danh sách các yếu tố dữ liệu bao gồm một lĩnh vực boolean "Checked" mà chúng tôi sử dụng để cư DataGrid.
Mã SelectionChanged tại đây sẽ đặt boolean được chọn trong đối tượng TheMissingChildren bên dưới và kích hoạt lại danh sách các mục. Điều đó đảm bảo rằng hộp sẽ được đánh dấu chọn & hiển thị trạng thái mới cho dù bạn nhấp vào hàng nào. Nhấp vào hộp kiểm hoặc một nơi nào đó trong hàng sẽ bật/tắt kiểm tra.
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid ThisGrid = (DataGrid)sender;
CheckedMusicFile ThisMusicfile = (CheckedMusicFile)ThisGrid.SelectedItem;
ThisMusicfile.Checked = !ThisMusicfile.Checked;
ThisGrid.Items.Refresh();
}
Nguồn
2011-04-27 20:36:52