Question

Ce code me donne une exception « Argument hors de portée ». Lorsque je supprime la liaison au SelectedIndex, la ComboBox est peuplée très bien et aucune exception est levée.

Toute idée de ce que je fais mal? Est-ce (pour une raison quelconque) pas possible?

Code:

public class RuleMap<T> : INotifyPropertyChanged
{
    public ObservableCollection<string> Options
    {
        get
        {
            return new ObservableCollection(){"A", "B", "C"};
        }
    }

    public int SelectedIndex
    {
        get
        {
            return 0;
        }
    }
}

public ObservableCollection<RuleMap> FilterItemSource;

XAML:

<ItemsControl ItemsSource="{Binding FilterItemSource}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">                                 <ComboBox Width="150" SelectedIndex="{Binding SelectedIndex}"
                          ItemsSource="{Binding Options}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Était-ce utile?

La solution 3

Transforme le contrôle ComboBox a été fondamentalement cassé pour commencer. Merci à cette Blog post par Rockford Lhotka, nous avons pu passer outre le contrôle ComboBox avec qui pourrait bien se lier à la propriété SelectedItem.

Ick.

Autres conseils

Je suppose que SelectedIndex est une propriété ReadOnly.
Autre problème peut être que 0 ce n'est pas dans la collection

Je pense que les objets ne sont pas ajoutés avant selectedIndex est binded, et puisqu'il n'y a aucun élément, il montre Argument hors d'exception Range.

Je voudrais éviter le retour d'un nouveau collection de votre propriété Options. Vous faites une hypothèse que WPF accède uniquement la propriété une fois.

Mais vous avez également la possibilité d'utiliser un CollectionView où vous retournez actuellement un ObservableCollection. Si vous utilisez une architecture MVVM, votre ViewModel peut exposer la propriété comme CollectionView et il a l'idée d'un élément « courant ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top