0

こんにちは、2つの列を持つwpfデータグリッドがあります

key    Value
1       abc
2       xyz
3       pqr

列のキーに相当する値のチェックボックスがあります。関連するキーをチェックすると、対応する行を選択する必要があります。複数のチェックボックスをオンにすると、データグリッドで複数の行が選択されます。

4

1 に答える 1

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; } }
}

行クラス:

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));
}
于 2012-11-02T11:57:52.047 に答える