2012-11-02 72 views
0

嗨,我有一个具有两列的WPF数据网格说多行选择在DataGrid的WPF编程

key Value 
1  abc 
2  xyz 
3  pqr 

我那里与价值等同复选框在列键。如果检查相关键,则必须选择相应的行。选中多个复选框,在datagrid中选择多行。

回答

0

的XAML:

<StackPanel> 
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding List}"> 
     <DataGrid.Columns> 
      <DataGridCheckBoxColumn Header="Check" 
       Binding="{Binding IsCheck, UpdateSourceTrigger=PropertyChanged}"/> 
      <DataGridTextColumn Header="Key" Binding="{Binding Key}"/> 
      <DataGridTextColumn Header="Value" Binding="{Binding Value}"/> 
     </DataGrid.Columns> 
    </DataGrid> 
    <CheckBox Content="1" DataContext="{Binding List[0]}" IsChecked="{Binding IsCheck}"/> 
    <CheckBox Content="2" DataContext="{Binding List[1]}" IsChecked="{Binding IsCheck}"/> 
    <CheckBox Content="3" DataContext="{Binding List[2]}" IsChecked="{Binding IsCheck}"/> 
</StackPanel> 

后面的代码:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     //fill 'List' here... 
     DataContext = this; 
     InitializeComponent(); 
    } 
    //List Observable Collection 
    private ObservableCollection<Row> _list = new ObservableCollection<Row>(); 
    public ObservableCollection<Row> List { get { return _list; } } 
} 

Row类:

public class Row: DependencyObject 
{ 
    //Key Dependency Property 
    public int Key 
    { 
     get { return (int)GetValue(KeyProperty); } 
     set { SetValue(KeyProperty, value); } 
    } 
    public static readonly DependencyProperty KeyProperty = 
     DependencyProperty.Register("Key", typeof(int), typeof(Row), new UIPropertyMetadata(0)); 
    //Value Dependency Property 
    public string Value 
    { 
     get { return (string)GetValue(ValueProperty); } 
     set { SetValue(ValueProperty, value); } 
    } 
    public static readonly DependencyProperty ValueProperty = 
     DependencyProperty.Register("Value", typeof(string), typeof(Row), new UIPropertyMetadata("")); 
    //IsCheck Dependency Property 
    public bool IsCheck 
    { 
     get { return (bool)GetValue(IsCheckProperty); } 
     set { SetValue(IsCheckProperty, value); } 
    } 
    public static readonly DependencyProperty IsCheckProperty = 
     DependencyProperty.Register("IsCheck", typeof(bool), typeof(Row), new UIPropertyMetadata(false)); 
}