Я новичок в WPF, но я немного знаком с DataGrids в более старых версиях .net. У меня есть DataGrid в WPF, который связан с DataTable, заполненный через SQLDataAdapter из запроса SQL. Я использую привязку DataGridTextColumn для полей из моего запроса (они выводятся как ReadOnly в сетке). У меня также есть другой DataGridTemplateColumn с TextBox. Это текстовое поле не привязано ни к каким данным, и оно появляется в каждой строке рядом с данными. Пользователь может ввести в TextBox рядом со строкой. Наконец, у меня есть еще один DataGridTemplateColumn для кнопки, которая вызывает Sub для извлечения выбранных пользователем (и введенных пользователем данных). После щелчка у меня появляется подпрограмма Sub для извлечения выбранной строки и указанного значения столбца (я выполнил это) И я хочу получить ввод, который пользователь ввел в поле texbox. Это последнее, чем я не могу понять, как это сделать. Я исследовал в течение нескольких часов. Я видел похожие решения, но не совсем то, что я пытаюсь сделать. Я не могу понять, как получить пользовательский ввод из текстового поля для выбранной строки. Вот мой XAML, кодовый Sub и снимок экрана.
<!--bound columns-->
<DataGridTextColumn Binding="{Binding InvProjectID}" Header="InvProjectID" Width="100" IsReadOnly="True" Visibility="Visible"/>
<DataGridTextColumn Binding="{Binding NSN}" Header="NSN" Width="100" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Nomenclature}" Header="Nomenclature" Width="100" IsReadOnly="True"/>
<!--select button-->
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="SelectInvProjectID">Select</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--textbox-->
<DataGridTemplateColumn Header="mytextbox">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox x:Name="txtUserEnteredText" Width="50"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
Private Sub SelectInvProjectID(sender As Object, e As RoutedEventArgs)
'set selected column and row selected to variable (column name is InvProjectID)
Dim strSelectedInvProjectID As String = ""
strSelectedInvProjectID = dgTestGrid.SelectedItem("InvProjectID")
'set entered text to variable HOW????
Dim strUserEnteredText As String = ""
'strUserEnteredText = ??????????
MessageBox.Show("Selected InvProjectID = " & strSelectedInvProjectID & vbCrLf & vbCrLf & "Text Entered = " & strUserEnteredText)
End Sub
WPF Datagrid