2016-04-07 9 views
1

Я очень новичок в WPF, и я хочу сделать форму ввода данных с помощью управления Datagrid. Я застрял, как получить значение данных ячейки для их хранения в базе данных?Как получить значение данных ячейки Datagrid в WPF?

Как и в окнах, мы использовали его для получения gridview1.Rows[0].Cells[0].value.

Как это получить в WPF?

ответ

-1

Вы можете получить, используя следующий код.

public void DataGridCellValue(object param) 
    { 
     string clipboard = string.Empty; 
     if (param != null) 
     { 

      if (param is DataGridCell) 
      { 
       DataGridCell cell = (DataGridCell)param; 
       dynamic column = cell.Column as DataGridTextColumn; 

       if (cell.Column is DataGridTextColumn) 
        column = cell.Column as DataGridTextColumn; 

       if (cell.Content is TextBlock) 
       { 
        TextBlock tBlock = cell.Content as TextBlock; 
        clipboard = string.IsNullOrEmpty(tBlock.Text) ? string.Empty : tBlock.Text.Trim(); 
       } 
      } 
      else if (param.GetType().IsValueType) 
      { 
       clipboard = param.ToString(); 
      } 
     } 
    } 

    #endregion 
} 

public ICommand DataGridCellValue 
    { 
     get 
     { 
      return new DelegatingCommand((object param) => 
      { 
       new Action(() => 
       { 
        DataGridCopyToClipBoard(param); 
       }).Invoke(); 
      }); 
     } 
    } 

Используйте Binding, как, как это в вашем WPF XAML

"{Binding CurrentCell, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}" 

Командное и CommandParameter являются

Command="{Binding DataGridCellValue}" 
CommandParameter="{Binding CurrentCell, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}" 
-1

Если вы новичок в WPF затем пройти через эти две ссылки ниже, чтобы начать и понять, как это делается в WPF:

  1. Binding in WPF

  2. DataGrid Data Binaing

В качестве краткого, вы действительно никогда не должен делать gridview1.Rows[0].Cells[0].value в WPF, вместо этого вы можете связать свой сетки к источнику данных. а затем попытаться получить значения из коллекции DataSource (если вы не ищете UI специфические, как: ячейки 0 в строке 0 и т.д.).

+0

Я хотел пустой DataGrid для пользователя для ввода данных, а затем сохранить его в базе данных. Для этого я связал пустой Datatable с Datagrid и оставил несколько текстовых полей для ввода User и 1, что добавит значения текстовых полей в сетку. и для сохранения я присвоил datacontext datagrid для Datatable и проделал дальнейшую работу над самой Datatable, которая передавала данные в базу данных. Теперь, пожалуйста, скажите мне ... это хорошая практика для WPF ???? Я сомневаюсь, что это так. –

+0

@AeshaPatel, хотя вы дали это описание, у меня есть много вопросов, например, почему пользователь вводит значения в текстовое поле, а затем вы используете событие кнопки, чтобы заполнить сетку этими значениями. не можете ли вы просто вводить текст в самой сетке. Также вам не нужно присваивать что-либо обратно в datatable, просто привяжите свою таблицу данных как источник данных grid'e и любые новые данные в сетке будут отражены обратно к вашему datatable, для этого в WPF не требуется явно выраженный код. Я могу сказать вам лучше, если вы дадите мне и код. –