首页 > 解决方案 > devexpress中的ComboBoxEdit不绑定itemsource,使用mvvm wpf

问题描述

我正在尝试在下面绑定一个 ComboBoxEdit,但下拉值不会被填充。

看法

<dxg:GridControl x:Name="OwnershipGrid" ItemsSource="{Binding Path=MarketOwnershipSettings.MarketOwnershipMapping, Mode=TwoWay}" SelectedItem="{Binding SelectedMapping}" SelectionMode="Row">
    <dxg:GridControl.View>
        <dxg:TableView x:Name="OwnershipView" ShowSearchPanelFindButton="False" ShowSearchPanelMode="Never" ShowFilterPanelMode="Never" AllowBestFit="True" ShowGroupPanel="False" AllowResizing="True">
        </dxg:TableView>
    </dxg:GridControl.View>
    <dxg:GridControl.Columns>
        <dxg:GridColumn FieldName="MarketGroupId" Header="Market Group" AllowEditing="False" Width="80" />
        <dxg:GridColumn FieldName="DefaultUser" Header="Default User" Width="80">
            <dxg:GridColumn.CellTemplate>
                <DataTemplate>
                    <dxe:ComboBoxEdit x:Name="PART_Editor" ItemsSource="{Binding Path=DefaultUsers}" />
                </DataTemplate>
            </dxg:GridColumn.CellTemplate>
        </dxg:GridColumn>
        <dxg:GridColumn FieldName="OverrideUserId" Header="Override User" Width="90">
            <dxg:GridColumn.CellTemplate>
                <DataTemplate>
                    <dxe:ComboBoxEdit x:Name="PART_Editor" ItemsSource="{Binding  Path=OverrideUsers,Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedMapping.OverrideUser}" />
                </DataTemplate>
            </dxg:GridColumn.CellTemplate>
        </dxg:GridColumn>
    </dxg:GridControl.Columns>
</dxg:GridControl>

模型 - MarketOwnershipModel

public ObservableCollection<MarketOwnershipMappingModel> MarketOwnershipMapping { get { return _marketOwnershipMapping; } set { _marketOwnershipMapping = value; RaisePropertyChanged(() => MarketOwnershipMapping); } } 

我可以查看除组合框项目源之外的所有字段

标签: c#wpfmvvm

解决方案


而不是使用CellTemplate,您可以使用ComboBoxEditSettings

<dxg:GridColumn
        Width="1*"
        FieldName="YourPropertyNameToBindOnDefaultUsers"
    >

    <dxg:GridColumn.EditSettings>
        <dxe:ComboBoxEditSettings
                ApplyItemTemplateToSelectedItem="True"
                ItemsSource="{Binding DefaultUsers}">
            <dxe:ComboBoxEditSettings.ItemTemplate>
                <DataTemplate>
                    <TextBlock Padding="3" Text="{Binding}" />
                </DataTemplate>
            </dxe:ComboBoxEditSettings.ItemTemplate>
        </dxe:ComboBoxEditSettings>
    </dxg:GridColumn.EditSettings>
</dxg:GridColumn>

推荐阅读