Wpf Datagrid 设置了模板 checkbox 如何一次选中?

 我来答
Mickal小米
2012-04-24 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1778万
展开全部
我写了个demo,希望对你有用。
前台:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<DataGrid Name="dg" Grid.Row="0" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Checked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Id,Mode=TwoWay}"/>
<DataGridTextColumn Binding="{Binding Name,Mode=TwoWay}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
<Button Content="全选" Width="50" Height="25" Grid.Row="1" Click="Button_Click"/>
</Grid>
后台:
public partial class MainWindow : Window
{
ObservableCollection<Exp> explist = new ObservableCollection<Exp>();

public MainWindow()
{
InitializeComponent();

explist.Add(new Exp() { Id = 1, Name = "a", Checked = false });
explist.Add(new Exp() { Id = 2, Name = "b", Checked = false });
explist.Add(new Exp() { Id = 3, Name = "c", Checked = false });

dg.ItemsSource = explist;
}

public class Exp : INotifyPropertyChanged
{
public int Id { get; set; }
public string Name { get; set; }

private bool Checked1;

public bool Checked
{
set
{
Checked1 = value;
OnPropertyChanged("Checked");
}
get
{
return Checked1;
}

}

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

}

private void Button_Click(object sender, RoutedEventArgs e)
{
foreach (Exp item in explist)
{
item.Checked = true;
}
}
}
追问
感谢答复,但我需要的效果是单个checkbox,选中一行,checkbox就选中,再单击就不选中。默认情况下,要选中单个的话,是要点2次
追答
那重写checkbox的click事件也许行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
80711688
2012-04-24 · 超过24用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:71.8万
展开全部
是不是想要点击列标题中的CheckBox就可以全部选中所有行的某个列中的CheckBox啊?
追问
不是全选,是单击,选中某一行的中checkbox,默认情况下,datagrid需要点2次才能把某个checkbox选中,因为第一次点是选中一格
追答
加我百度Hi,我传给你个程序 默认就是你说的效果啊 很简单啊 

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式