0

私はデータ グリッドの 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>

しかし、問題は、すでに選択されているコンボボックスを編集しようとすると、どれが表示されないかです。

ありがとう、@ナグ。

4

1 に答える 1

0

cmb.SelectedItem = cData.FieldType;なしで試してみてくださいcmbGFld_Loaded()SelectedItem="{Binding Path=FieldType}"これにより、XAMLのバインドが上書きされます。代わりに、バインドされた FieldType プロパティで選択した項目を設定します。私はあなたのアプリケーションを知りませんが、次のようなものです:

FieldType = condLists[FieldGrid.SelectedIndex].FieldType;
于 2012-05-28T10:13:47.540 に答える