8,737
社区成员
发帖
与我相关
我的任务
分享
xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
<data:DataGridTextColumn Binding="{Binding A}" Header="hello">
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Content="{Binding B}" IsChecked="True" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGridTextColumn.HeaderStyle>
</data:DataGridTextColumn>
<Grid x:Name="LayoutRoot" Background="White">
<sdk:DataGrid Name="dg" AutoGenerateColumns="False" Height="300" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" ItemsSource="{Binding Collection}">
<sdk:DataGrid.Columns>
<sdk:DataGridCheckBoxColumn Binding="{Binding IsChecked,Mode=TwoWay}" >
<sdk:DataGridCheckBoxColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Content="全选" IsChecked="{Binding IsAllSelected,Mode=TwoWay}" />
<CheckBox Content="全不选" IsChecked="{Binding IsNoneSelected,Mode=TwoWay}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</sdk:DataGridCheckBoxColumn.HeaderStyle>
</sdk:DataGridCheckBoxColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
public class TestModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private bool isChecked;
public bool IsChecked
{
get { return isChecked; }
set
{
if (isChecked != value)
{
isChecked = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsChecked"));
}
}
}
}
public class TestModelForDataGrid : INotifyPropertyChanged
{
public TestModelForDataGrid()
{
Collection = new ObservableCollection<TestModel>();
IsAllSelected = false;
IsNoneSelected = true;
for (int i = 0; i < 10; i++)
Collection.Add(new TestModel { IsChecked = false });
}
public event PropertyChangedEventHandler PropertyChanged;
private bool isAllSelected;
public bool IsAllSelected
{
get { return isAllSelected; }
set
{
if (isAllSelected != value)
{
isAllSelected = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsAllSelected"));
if (value)
{
IsNoneSelected = false;
foreach (var c in Collection)
c.IsChecked = true;
}
}
}
}
private bool isNoneSelected;
public bool IsNoneSelected
{
get { return isNoneSelected; }
set
{
if (isNoneSelected != value)
{
isNoneSelected = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsNoneSelected"));
if (value)
{
IsAllSelected = false;
foreach (var c in Collection)
c.IsChecked = false;
}
}
}
}
public ObservableCollection<TestModel> Collection { get; set; }
}
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
TestModelForDataGrid model = new TestModelForDataGrid();
dg.DataContext = model;
}
}