Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于wpf datagrid中更改的组合框选择获取列值_C#_Wpf_Xaml_Combobox_Datagrid - Fatal编程技术网

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
    }