Frage

Dieser Code gibt mir ein „Argument out of range“ Ausnahme. Als ich die Bindung an den SelectedIndex entfernen, wird die ComboBox ganz gut bevölkert und keine Ausnahme ausgelöst.

Jede Idee, was ich falsch mache? Ist das (aus irgendeinem Grund) nicht möglich ist?

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>
War es hilfreich?

Lösung 3

Schaltet das ComboBox-Steuerelement aus wurde grundlegend zu beginnen gebrochen. Dank dieser Blog, konnten wir die ComboBox-Steuerelement außer Kraft zu setzen mit eine, die selectedItem-Eigenschaft richtig binden kann.

Ick.

Andere Tipps

Ich denke, dass SelectedIndex es ist eine Readonly-Eigenschaft.
Anderes Problem kann sein, dass 0, es ist nicht in der Sammlung

Ich denke, dass Positionen, die nicht vor selectedIndex hinzugefügt werden Binded ist, und da es kein Element gibt, wird es Argument aus Reichweite Ausnahme darstellt.

Ich möchte vermeiden, eine neue Sammlung von Ihrer Eigenschaft Options zurückzukehren. Sie machen eine Annahme, die WPF nur einmal die Eigenschaft zugreift.

Sie haben aber auch die Möglichkeit, mit einem Collection wo Sie gerade Rückkehr eine ObservableCollection. Wenn Sie eine MVVM Architektur verwenden, Ihr Ansichtsmodell die Eigenschaft als Collection aussetzen kann und es hat den Begriff der „aktuellen“ eingegeben wird.

scroll top