DataGridComboBoxColumn绑定2个列表

时间:2012-10-17 17:20:15

标签: c# wpf xaml binding datagridcomboboxcolumn

我在DataGrid中绑定ComboBox的值时遇到了麻烦:

 <DataGrid Grid.Row="1" Grid.Column="0" ItemsSource="{Binding ListeGrilleTarifaire}" Name="dg_ForfaitCommune" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="False" Visibility="{Binding accesGrilleForfaitCommune}">
    <DataGrid.Columns>
        <DataGridComboBoxColumn Header="{x:Static trad:Langues.lblPays}" ItemsSource="{Binding ListePrixUnitaires}" SelectedItemBinding="{Binding tarifDestination_PAYS,Mode=TwoWay}" Width="80" />
    </DataGrid.Columns>
</DataGrid>
  • 我的DataGrid ItemsSource是“ListeGrilleTarifaire”类型的对象

  • ListeGrilleTarifaire是ViewModelGrilleTarifaire对象的列表(属性)。 ViewModelGrilleTarifaire是我的用户控件的DataContext(位于我的DataGrid中)。

我想要的是:

  1. 我的组合框列出了ViewModelGrilleTarifaire类中定义的ListePays(List<string>)列表中包含的值。

  2. 当DataGrid加载ListeGrilleTarifaire对象时,必须在组合框中自动绑定ListeGrilleTarifaire.tarifDestination_PAYS的值(简而言之......它必须绑定)

  3. 欢迎任何帮助!!

    谢谢!

    一个。

3 个答案:

答案 0 :(得分:0)

我认为这段代码与您想要的完全相同,但它可能对您有帮助。

<sdk:DataGridTemplateColumn Width="150" Header="EstimateIOName">
            <sdk:DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox x:Name="cbo" ItemsSource="{StaticResource IOList}" SelectedValue="{Binding Path=EstimateIOName,Mode=TwoWay}" SelectedValuePath="EstimateIOName"  SelectionChanged="cbo_SelectionChanged" DropDownClosed="cbo_DropDownClosed" ></ComboBox>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellEditingTemplate>
        </sdk:DataGridTemplateColumn>

答案 1 :(得分:0)

我无法在您的代码中看到任何代码问题,只是可能发生的一些事情:

首先:ListeGrilleTarifaire.tarifDestination_PAYS必须是属性,如果它实现了更好的INotifiyPropertyChanged。

第二:ListeGrilleTarifaire.tarifDestination_PAYS必须是同一类型的ListePrixUnitaires项目。

如果这对你不起作用,请更好地解释错误...... 希望对你有帮助......

答案 2 :(得分:0)

按照这篇文章(http://stackoverflow.com/questions/5409259/binding-itemssource-of-a-comboboxcolumn-in-wpf-datagrid)的答案,我为DataGridComboBoxColumn定义了样式并且它可以工作