C# 基于wpf datagrid中更改的组合框选择获取列值
我有一个C# 基于wpf datagrid中更改的组合框选择获取列值,c#,wpf,xaml,combobox,datagrid,C#,Wpf,Xaml,Combobox,Datagrid,我有一个wpfdatagrid,其中一列是datagridcomboxcolumn。 我需要根据此组合框中的选定项更改某些列的值。 下面是xaml代码: <DataGrid Name="dgInvDetails" ItemsSource="{Binding}" AutoGenerateColumns="False" > <DataGrid.Columns> <mui:DataGridTextColumn Header
wpfdatagrid
,其中一列是datagridcomboxcolumn
。
我需要根据此组合框中的选定项更改某些列的值。
下面是xaml
代码:
<DataGrid Name="dgInvDetails" ItemsSource="{Binding}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<mui:DataGridTextColumn Header="ID" Binding="{Binding ID}" IsReadOnly="True"/>
<mui:DataGridComboBoxColumn Header="Item Description" x:Name="DdlItems" IsReadOnly="True" SelectedItemBinding="{Binding Description}"
SelectedValuePath="ItemID"
DisplayMemberPath="Description">
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="{x:Type ComboBox}">
<EventSetter Event="SelectionChanged" Handler="ItemSelectionChanged" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</mui:DataGridComboBoxColumn>
<mui:DataGridTextColumn x:Name="TextQuantity" Header="Quatity" Binding="{Binding Quatity}" IsReadOnly="True" />
<mui:DataGridTextColumn x:Name="TextUnitPrice" Header="Unit Price" Binding="{Binding UnitPrice}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
那么,我如何访问其他文本框并为所选行设置其中的值呢?为什么不在模型本身中捕获描述更改,并在模型中更改单价?我如何捕获模型中的描述更改?如果您的意思是在ItemSelectionChanged方法中,是的,这就是我正在做的,但我不知道如何访问同一选定行的TextUnitPrice文本框。不,我的意思是,每个列都绑定到某个自定义类型的属性。所以,当您更改描述属性时,会调用一个setter,您可以在那里更改单价。如果正确实现了INotifyPropertyChanged,UI将反映该更改。这将在datagrid之外工作。因为在我的例子中,我只需要访问“所选行”的单价文本框。因此,我只需要为更改项目组合的选定行的单价设置一个值。
private void ItemSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var comboBox = sender as ComboBox;
InvoiceDetails selectedItem = this.dgInvDetails.CurrentItem as InvoiceDetails;
// Getting the invoice detail from DB
// Setting the invoice detail unit price to TextUnitPrice
}