KMC
KMC

Reputation: 20046

How to set index in DevExpress ComboBoxEdit?

How to "Set" the SelectedIndex in DevExpress ComboBoxEdit?
I tried both in XAML and in code behind, but the index was not set, it starts out with a blank item.

My XAML: [I can't see why this doesn't work, but it doesn't..]

<dxb:BarEditItem.EditSettings>
    <dxe:ComboBoxEditSettings>
        <dxe:ComboBoxEditSettings.Items>
            <dxe:ComboBoxEditItem IsSelected="True">AAA</dxe:ComboBoxEditItem>
            <dxe:ComboBoxEditItem>BBB</dxe:ComboBoxEditItem>
            <dxe:ComboBoxEditItem>CCC</dxe:ComboBoxEditItem>
        </dxe:ComboBoxEditSettings.Items>
    </dxe:ComboBoxEditSettings>
</dxb:BarEditItem.EditSettings>

My C# code:
[I'm getting the countStr correctly so I'm sure the ComboBoxEdit and the items are initialized and added ok, but SelectedIndex still don't set the index..]
* also I do not want to use EditValue to set the value, I need to use an integer (Index) to set it.

private void Foo_LinkControlLoaded(object sender,
    DevExpress.Xpf.Bars.BarItemLinkControlLoadedEventArgs e)
{
    BarEditItemLink link = (BarEditItemLink)sender;
    countStr = ((ComboBoxEdit)link.Editor).Items.Count.ToString();
    ((ComboBoxEdit)link.Editor).SelectedIndex = 2;
}

Upvotes: 1

Views: 10535

Answers (1)

DmitryG
DmitryG

Reputation: 17850

There are no SelectedIndex or SelectedItem property within the editor settings (e.g. ComboBoxEditSettings). But you can set the SelectedIndex, SelectedItem or EditValue properties of ComboBoxEdit via the editor style:

<dxb:BarEditItem x:Name="beiComboBox">
    <dxb:BarEditItem.EditStyle>
        <Style TargetType="dxe:ComboBoxEdit">
            <Setter Property="SelectedIndex" Value="1"/>
        </Style>
    </dxb:BarEditItem.EditStyle>
    <dxb:BarEditItem.EditSettings>
        <dxe:ComboBoxEditSettings>
            <dxe:ComboBoxEditSettings.Items>
                <dxe:ComboBoxEditItem>AAA</dxe:ComboBoxEditItem>
                <dxe:ComboBoxEditItem>BBB</dxe:ComboBoxEditItem>
                <dxe:ComboBoxEditItem>CCC</dxe:ComboBoxEditItem>
            </dxe:ComboBoxEditSettings.Items>
        </dxe:ComboBoxEditSettings>
    </dxb:BarEditItem.EditSettings>
</dxb:BarEditItem>

You can also set a ComboBoxEdit.SelectedIndex property from codebehind if you catch the Loaded event:

<dxb:BarEditItem.EditStyle>
    <Style TargetType="dxe:ComboBoxEdit">
        <EventSetter Event="Loaded" Handler="ComboBoxEdit_Loaded"/>
    </Style>
</dxb:BarEditItem.EditStyle>

//...
void ComboBoxEdit_Loaded(object sender, RoutedEventArgs e) {
    ((ComboBoxEdit)sender).SelectedIndex = 1;
}

Upvotes: 2

Related Questions