单击DataGridCheckBoxColumn的事件

Pra*_*dda 19 wpf events datagrid wpfdatagrid

我有一个DataGrid带有a的WPF表单DataGridCheckBoxColumn,但我没有找到任何点击事件,检查并取消选中它...

这些活动是否适用于DataGridCheckBoxColumn?如果没有,请建议我可以使用的一些解决方法.

IFi*_*ink 22

引自William Han的答案:http://social.msdn.microsoft.com/Forums/ar/wpf/thread/9e3cb8bc-a860-44e7-b4da-5c8b8d40126d

它只是向列添加一个事件.这是一个很好的简单解决方案.

也许您可以使用EventSetter以下示例:

标记:

<Window x:Class="DataGridCheckBoxColumnTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:DataGridCheckBoxColumnTest"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:People x:Key="People"/>
    </Window.Resources>
    <Grid>
        <DataGrid ItemsSource="{StaticResource People}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name"/>
                <DataGridCheckBoxColumn Binding="{Binding Path=LikeCar}" Header="LikeCar">
                    <DataGridCheckBoxColumn.CellStyle>
                        <Style>
                            <EventSetter Event="CheckBox.Checked" Handler="OnChecked"/>
                        </Style>
                    </DataGridCheckBoxColumn.CellStyle>
                </DataGridCheckBoxColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

码:

using System;
using System.Windows;

namespace DataGridCheckBoxColumnTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        void OnChecked(object sender, RoutedEventArgs e)
        {
            throw new NotImplementedException();
        }
    }
}


namespace DataGridCheckBoxColumnTest
{
    public class Person
    {
        public Person(string name, bool likeCar)
        {
            Name = name;
            LikeCar = likeCar;
        }
        public string Name { set; get; }
        public bool LikeCar { set; get; }
    }
}

using System.Collections.Generic;

namespace DataGridCheckBoxColumnTest
{
    public class People : List<Person>
    {
        public People()
        {
            Add(new Person("Tom", false));
            Add(new Person("Jen", false));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*art 1

<wpf:DataGridCheckBoxColumn Header="Cool?" Width="40" Binding="{Binding IsCool}"/>
Run Code Online (Sandbox Code Playgroud)