我如何将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属性绑定到我的视图模型中的属性。
请帮忙!谢谢!
好的。我自己找的,但不知道为什么要做成这样。我把答案贴出来,以防有人需要。
<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>