WPF - DataGridCheckBoxColumn: How to give ElementName to DataGridCell and CheckBox therein?
<Window.Resources> <Style x:Key="cell" TargetType="DataGridCell"> <Setter Property="Background" Value="LightBlue"/> </Style> </Window.Resources> <StackPanel> <TextBlock Name="tb" Text="hello" Width="150" Background="LightSteelBlue"/> <DataGrid Name="dg" ItemsSource="{Binding Persons}" AutoGenerateColumns="False" CellStyle="{StaticResource cell}"> <DataGrid.Resources> <Style x:Key="BackgroundColourStyle" TargetType="{x:Type CheckBox}"> <Style.Triggers> <Trigger Property="IsChecked" Value="True"> <Setter Property="Background" Value="LightGreen" /> </Trigger> </Style.Triggers> </Style> </DataGrid.Resources> <DataGrid.Columns> <DataGridTextColumn Header="ID" Binding="{Binding ID}" /> <DataGridTextColumn x:Name="Name1" Header="Name" Binding="{Binding Name}"/> <DataGridCheckBoxColumn x:Name="check" Header="{Binding ElementName=Name1,Path= Header}" Binding="{Binding Check}" ElementStyle="{StaticResource BackgroundColourStyle }"/> <DataGridTemplateColumn x:Name="Check" > <DataGridTemplateColumn.Header > <CheckBox Content="SelectAll" x:Name="headerCheckBox" Background="{Binding ElementName=tb,Path=Background}" Width="{Binding ElementName=tb ,Path=Width}"/> </DataGridTemplateColumn.Header> <DataGridTemplateColumn.CellTemplate > <DataTemplate> <CheckBox x:Name="CheckSelected" Background="Orange" IsChecked="{Binding IsChecked,ElementName=headerCheckBox,Mode=OneWay}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </StackPanel>
public partial class MainWindow : Window { public ViewMode viewmodel; public MainWindow() { InitializeComponent(); viewmodel = new ViewMode(); this.DataContext = viewmodel; } } public class ViewMode : INotifyPropertyChanged { public ObservableCollection<Person> Persons { get; set; } public ViewMode() { Persons = new ObservableCollection<Person>(); Persons.Add(new Person { ID = 1, Name = "man", Check=true}); Persons.Add(new Person { ID = 2, Name = "john", Check = true}); Persons.Add(new Person { ID = 3, Name = "jo" , Check = false }); } protected void OnPropertyChanged(string porpName) { var temp = PropertyChanged; if (temp != null) temp(this, new PropertyChangedEventArgs(porpName)); } public event PropertyChangedEventHandler PropertyChanged; } public class Person { public int ID { get; set; } public String Name { get; set; } public bool Check { get; set; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2018-12-28 每周工作4小时,蒂莫西·费里斯 最理想的工作方式和生活方式,QQ群666243547
2018-12-28 .NET Core 指南 官方