代码之家  ›  专栏  ›  技术社区  ›  Davud MIRZAYI

当我双击WPF DataGrid行以获取单元格值时,返回NULL

  •  0
  • Davud MIRZAYI  · 技术社区  · 8 年前

    我在我的代码中得到了这个错误 MouseDoubleClick 事件

    对象的实例。”

    <DataGrid x:Name="dtgTarafDovvom" Style="{StaticResource DataGridStyle1}" ItemsSource="{Binding}" MouseDoubleClick="dtgTarafAvval_MouseDoubleClick">
      <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=TarafeynQarardadID}" Header="کد ">
        </DataGridTextColumn>
    </DataGrid>
    

    private void dtgTarafAvval_MouseDoubleClick(object sender, ouseButtonEventArgs e) {
      TarafeynQarardadDTO t = dtgTarafAvval.SelectedItem as TarafeynQarardadDTO;
      int tarafeynID = t.TarafeynQarardadID;
    }
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Ketan Dubey    8 年前

    在检索单元格内容之前,您可能需要检查当前选定的计数是否不为零。只是一个小代码来帮助你。

     private void dtgTarafAvval_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if(dtgTarafAvval.SelectedCells.Count > 0)
            {
                CellValue = GetSelectedValue(dtgTarafAvval);
                //CellValue is a variable of type string.
    
            }
        }
    
        private string GetSelectedValue(DataGrid grid)
        {
            DataGridCellInfo cellInfo = grid.SelectedCells[0];
            if (cellInfo == null) return null;
    
            DataGridBoundColumn column = cellInfo.Column as DataGridBoundColumn;
            if (column == null) return null;
    
            FrameworkElement element = new FrameworkElement() { DataContext = cellInfo.Item };
            BindingOperations.SetBinding(element, TagProperty, column.Binding);
    
            return element.Tag.ToString();
        }
    

    PS:以上代码适用于SelectionUnit='FullRow'

        2
  •  0
  •   mm8    8 年前

    MouseDoubleClick 的事件 DataGridRow 容器和铸件 DataContext

    <DataGrid x:Name="dtgTarafDovvom" Style="{StaticResource DataGridStyle1}" ItemsSource="{Binding}">
        <DataGrid.RowStyle>
            <Style TargetType="DataGridRow">
                <EventSetter Event="MouseDoubleClick" Handler="dtgTarafDovvom_MouseDoubleClick" />
            </Style>
        </DataGrid.RowStyle>
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=TarafeynQarardadID}" Header="کد " />
        </DataGrid.Columns>
    </DataGrid>
    

    private void dtgTarafAvval_MouseDoubleClick(object sender, ouseButtonEventArgs e)
    {
        DataGridRow row = sender as DataGridRow;
        TarafeynQarardadDTO t = row.DataContext as TarafeynQarardadDTO;
        int tarafeynID = t.TarafeynQarardadID;
    }