WPF组合框动态绑定

时间:2012-05-28 06:42:00

标签: wpf combobox wpfdatagrid dynamic-binding

我在数据网格edititemtemplate中有一个组合框,我在组合框加载的事件中写了一些代码,如:

代码:

private void cmbGFld_Loaded(object sender, RoutedEventArgs e)
        {
            ComboBox cmb = (ComboBox)sender; 
            cmb.ItemsSource = FieldsList.GetFieldList();
            ConditionField cData = condLists[FieldGrid.SelectedIndex];
            cmb.SelectedItem = cData.FieldType;
        }

XAML代码:

<toolkit:DataGridTemplateColumn.CellEditingTemplate>
                                        <DataTemplate x:Name="editTemplate">
                                            <ComboBox Loaded="cmbGFld_Loaded" BorderBrush="Transparent" SelectedItem="{Binding Path=FieldType}" SelectedValuePath="Name" BorderThickness="0" FontSize="13" FontStyle="Italic" FontWeight="Normal" Foreground="DimGray" x:Name="cmbGFld" Template="{StaticResource ComboBoxTemplate2}">
                                                <ComboBox.Resources>
                                                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">Green</SolidColorBrush>
                                                </ComboBox.Resources>
                                                <ComboBox.ItemTemplate>
                                                    <DataTemplate>
                                                        <TextBlock HorizontalAlignment="Left"  Text="{Binding Name}"/>
                                        </DataTemplate>
                                                </ComboBox.ItemTemplate>
                                            </ComboBox>

                                        </DataTemplate>
                                    </toolkit:DataGridTemplateColumn.CellEditingTemplate>

但问题是,当我尝试编辑组合框时,它没有显示哪个已被选中,任何人都帮助我。

谢谢, @nag。

1 个答案:

答案 0 :(得分:0)

cmb.SelectedItem = cData.FieldType;中没有cmbGFld_Loaded()的情况下尝试一下。这将覆盖XAML中的绑定SelectedItem="{Binding Path=FieldType}"。而是在绑定的FieldType属性中设置所选项目。我不知道你的应用程序,但是:

FieldType = condLists[FieldGrid.SelectedIndex].FieldType;