zoukankan      html  css  js  c++  java
  • WPF Datagrid对鼠标单击进行响应,借助EventSetter

    在做的一个c#的项目中发现Datagrid没办法直接对鼠标单击进行响应,

    调用MouseDown事件也需要点击某一行第二次才能响应。

    所以借助EventSetter来简单的实现了一个。

    界面部分的代码

            <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="10,38,0,0"
                      VerticalAlignment="Top" Height="257" FontSize="13.333"
                      AutoGenerateColumns="False" AlternationCount="2" CanUserAddRows="False"
                      MinWidth="504" Width="513" SelectionUnit="FullRow">
                <DataGrid.RowStyle>
                    <Style  TargetType="DataGridRow">
                        <EventSetter Event="GotFocus" Handler="Item_GotFocus"/>
                    </Style>
                </DataGrid.RowStyle>
                <DataGrid.Columns>
                    <DataGridCheckBoxColumn />
                    <DataGridTextColumn Header="歌曲名" Width="200" Binding="{Binding Path=Title}" IsReadOnly="True"/>
                    <DataGridTextColumn Header="艺术家" Width="127" Binding="{Binding Path=Artist}" IsReadOnly="True"/>
                    <DataGridTextColumn Header="专辑" Width="140" Binding="{Binding Path=Album}" IsReadOnly="True"/>
                </DataGrid.Columns>
            </DataGrid>

    对应的c#的代码

            private void Item_GotFocus(object sender, RoutedEventArgs e)
            {
                var item = (DataGridRow)sender;
                FrameworkElement objElement = dataGrid.Columns[0].GetCellContent(item);
                if (objElement != null)
                {
                    CheckBox objChk = (CheckBox)objElement;
                    objChk.IsChecked = !objChk.IsChecked;
                }
            }

    附上用mousedown事件的代码

            private void DataGrid_MouseDown(object sender, MouseButtonEventArgs e)
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    var se = dataGrid.SelectedItem;
                    FrameworkElement objElement = dataGrid.Columns[0].GetCellContent(se);
                    if (objElement != null)
                    {
                        CheckBox objChk = (CheckBox)objElement;
                        objChk.IsChecked = !objChk.IsChecked;
                    }
                }
            }

    需要在这个界面的构造函数中添加

     dataGrid.MouseDown += DataGrid_MouseDown;
  • 相关阅读:
    'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
    flask os.environ 的作用
    flask 中xx.init_app(app)方法
    win10安装ubuntu双系统遇到的问题
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    常用正则
    使用elementUI动态增减表单项 且 使用自定义校验
  • 原文地址:https://www.cnblogs.com/sunbingqiang/p/9993927.html
Copyright © 2011-2022 走看看