【问题标题】:WPF combobox dynamic bindingWPF 组合框动态绑定
【发布时间】:2012-05-28 06:42:00
【问题描述】:

我有一个带有数据网格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。

【问题讨论】:

    标签: wpf combobox wpfdatagrid dynamic-binding


    【解决方案1】:

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

    FieldType = condLists[FieldGrid.SelectedIndex].FieldType;
    

    【讨论】:

    • 感谢您的宝贵回答,我按照上面的方法更改了我的代码,但是当我调用 cmb.selecteditem= condlist[fieldgrid.selectedindex].fieldtype 时,我得到了空值。
    猜你喜欢
    • 2012-06-18
    • 2011-03-09
    • 1970-01-01
    • 2023-03-17
    • 2015-09-15
    • 2018-01-17
    相关资源
    最近更新 更多