WPF datagrid部分功能简记

WPF datagrid部分功能简记

在datagrid中,涉及到DataGridTextColumn内容的居中设置,在窗体的资源文件中声明

<Style x:Key="dgCell" TargetType="TextBlock">
   <Setter Property="TextAlignment" Value="Center"/>
   <Setter Property="VerticalAlignment" Value="Center"/>
</Style>

然后在列中设置元素样式,即可将单元格内容居中显示

<DataGridTextColumn  ElementStyle="{StaticResource dgCell}">

在自定义的TreeView中TreeViewItem的双击事件是默认打开的,如果需要对双击事件进行自己控制,可以使用以下方法。在TreeViewItem样式中加入事件:

<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
    <Style.Setters>
       <EventSetter Event="MouseDoubleClick" Handler="OnListViewItemDoubleClick" />
    </Style.Setters>
</Style>

同时在CS文件中写入对应的代码:

private void OnListViewItemDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (sender is ListViewItem&&(sender as ListViewItem).IsSelected)
            {
                 //如果双击的是item 进行你需要的操作
            }
        }

判断条件是因为双击事件存在一定的错误,双击节点两边的空白区域也会进入事件,所以判断双击的元素是否为ListViewItem即可,其次,TreeViewItem的双击事件是在每个TreeViewItem注册的,从而导致双击子节点,会出现多次调用双击事件从而影响正确的程序流程的情况,所以,加上判断是否被选中,即可避免此问题的出现。
以上为最近学习WPF过程中遇见的基础问题,但是也经常会用到,写下博客记录,下次就能有印象。如有侵权,请联系本人QQ:464905795。谢谢。

http://www.voidcn.com/article/p-becqcysc-btb.html
https://blog.csdn.net/immotal_xiaoqiang/article/details/108547554

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现WPF DataGrid的全选功能,可以在DataGrid的Header中添加一个CheckBox,当该CheckBox被选中时,遍历DataGrid的所有行,并将每行的CheckBox选中。 以下是一个示例代码,实现了DataGrid的全选功能: ```xml <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTemplateColumn Header=""> <DataGridTemplateColumn.HeaderTemplate> <DataTemplate> <CheckBox x:Name="chkSelectAll" Click="chkSelectAll_Click"/> </DataTemplate> </DataGridTemplateColumn.HeaderTemplate> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> <DataGridTextColumn Header="Age" Binding="{Binding Age}" /> </DataGrid.Columns> </DataGrid> ``` 在代码中,我们为DataGrid添加了一个模板列,该模板列包含一个CheckBox。在HeaderTemplate中,我们使用了一个命名的CheckBox,用于在后续代码中引用。 接下来,在DataGrid的DataContext中,我们需要添加一个IsSelected属性,用于存储每行CheckBox的选中状态: ```csharp public class ItemViewModel : INotifyPropertyChanged { private bool _isSelected; public bool IsSelected { get { return _isSelected; } set { _isSelected = value; OnPropertyChanged("IsSelected"); } } public string Name { get; set; } public int Age { get; set; } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } public class MainWindowViewModel { public ObservableCollection<ItemViewModel> Items { get; set; } public MainWindowViewModel() { Items = new ObservableCollection<ItemViewModel>() { new ItemViewModel() { Name = "John", Age = 30 }, new ItemViewModel() { Name = "Jane", Age = 25 }, new ItemViewModel() { Name = "Bob", Age = 35 } }; } } ``` 最后,在代码中添加Click事件处理程序,用于处理CheckBox的选中状态: ```csharp private void chkSelectAll_Click(object sender, RoutedEventArgs e) { var chk = sender as CheckBox; foreach (var item in Items) { item.IsSelected = chk.IsChecked.Value; } } ``` 在事件处理程序中,我们首先获取发送事件的CheckBox。然后,我们遍历DataGrid的所有行,并将每行的CheckBox选中状态设置为发送事件的CheckBox的选中状态。 现在,当用户选中DataGrid的Header中的CheckBox时,所有行的CheckBox将被选中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gaga.boom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值