我如何将WPF DataGridComboBoxColumn绑定到ViewModel属性

本文关键字:绑定 ViewModel 属性 DataGridComboBoxColumn WPF | 更新日期: 2023-09-27 18:10:17

我的视图中有一个WPF DataGrid,我希望能够使用组合框编辑该列。为此,我在视图模型上创建了一个属性,如下所示:

public List<EnumeradorWCFModel> TiposCarga { get; set; }

使用WCF服务正确填充属性。现在这是我的DataGrid定义:

<DataGrid ItemsSource="{Binding Path=TarifarioSel.TarifariosDet}" 
              IsReadOnly="False" AutoGenerateColumns="False">
        <DataGrid.Columns>                
            <DataGridComboBoxColumn Width="200" Header="Tipo Carga" ItemsSource="{Binding Path=TiposCarga}" 
                SelectedValueBinding="{Binding Path=ID_TipoCarga}"  DisplayMemberPath="Descripcion" SelectedValuePath="ID"/>                
        </DataGrid.Columns>

我也试过这个,没有运气:

<DataGrid ItemsSource="{Binding Path=TarifarioSel.TarifariosDet}" 
              IsReadOnly="False" AutoGenerateColumns="False">
        <DataGrid.Columns>                
            <DataGridComboBoxColumn Width="200" Header="Tipo Carga" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}}, Path=DataContext.TiposCarga}" 
                SelectedValueBinding="{Binding Path=ID_TipoCarga}"  DisplayMemberPath="Descripcion" SelectedValuePath="ID"/>                
        </DataGrid.Columns>

问题是我如何将组合框列的ItemsSource属性绑定到我的视图模型中的属性。

请帮忙!谢谢!

我如何将WPF DataGridComboBoxColumn绑定到ViewModel属性

好的。我自己找的,但不知道为什么要做成这样。我把答案贴出来,以防有人需要。

<DataGrid ItemsSource="{Binding Path=TarifarioSel.TarifariosDet}" 
              IsReadOnly="False" AutoGenerateColumns="False">
        <DataGrid.Columns>                                
            <DataGridComboBoxColumn Width="200" Header="Tipo Carga" 
                SelectedValueBinding="{Binding Path=ID_TipoCarga}"  DisplayMemberPath="Descripcion" SelectedValuePath="ID">
                <DataGridComboBoxColumn.ElementStyle>
                    <Style TargetType="ComboBox">
                        <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.TiposCarga}"/>
                    </Style>
                </DataGridComboBoxColumn.ElementStyle>
                <DataGridComboBoxColumn.EditingElementStyle>
                    <Style TargetType="ComboBox">
                        <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.TiposCarga}"/>
                    </Style>
                </DataGridComboBoxColumn.EditingElementStyle>
            </DataGridComboBoxColumn>