こんにちは、2つの列を持つwpfデータグリッドがあります
key Value
1 abc
2 xyz
3 pqr
列のキーに相当する値のチェックボックスがあります。関連するキーをチェックすると、対応する行を選択する必要があります。複数のチェックボックスをオンにすると、データグリッドで複数の行が選択されます。
こんにちは、2つの列を持つwpfデータグリッドがあります
key Value
1 abc
2 xyz
3 pqr
列のキーに相当する値のチェックボックスがあります。関連するキーをチェックすると、対応する行を選択する必要があります。複数のチェックボックスをオンにすると、データグリッドで複数の行が選択されます。
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; } }
}
行クラス:
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));
}