我很新,并且真的很难解决以下问题:
我有一个下面的列,可以正确加载数据:
<xcdg:Column Title="TestData" FieldName="TestData" Width="1*" >
但我需要通过从弹出窗口中选择一个值来修改它。
我之前已经解决了类似问题,但它是针对文本框的:
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Model.TestData}">
<TextBox.InputBindings>
<KeyBinding Key="F12" Command="{Binding SearchCommand}" CommandParameter="TestData"></KeyBinding>
</TextBox.InputBindings>
</TextBox>
不确定是否需要有关弹出窗口的更多信息,基本上它会返回所选的值,该值应该到达列。
答案 0 :(得分:1)
您可以简单地将新值分配给相应的单元格。
DataRowView drv = myDataGrid.CurrentItem as DataRowView;
drv["FieldName"] = "New Value";
在下面显示的示例中,我使用一个弹出窗口,其中包含ID,Name和Result的属性。它将显示提供的ID和名称。用户可以编辑名称(我将ID字段设为只读),然后单击“确定”或“取消”按钮。两者都将关闭弹出窗口,但只有单击确定按钮才会在关闭前将Result属性设置为true。然后,我可以检查此Result属性以了解是否应该更新网格中的单元格。
private void btnShowPopup_Click(object sender, RoutedEventArgs e)
{
// Get the grid's current row
DataRowView drv = this.myGrid.CurrentItem as DataRowView;
// Popup shows product's ID and Name (user can only edit Name)
Popup popup = new Popup();
popup.ProductID = drv["ProductID"].ToString();
popup.ProductName = drv["ProductName"].ToString();
popup.ShowDialog();
// Apply changes if user clicked the OK button
if (popup.Result == true)
drv["ProductName"] = popup.ProductName;
}