Pregunta

Este código me da un “argumento fuera de rango” excepción. Cuando quito la unión al SelectedIndex, la ComboBox se rellena muy bien y no hay excepción.

Cualquier idea de lo que estoy haciendo mal? Es este (por alguna razón) no es posible?

Código:

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>
¿Fue útil?

Solución 3

Ahora resulta que el control ComboBox se rompió fundamentalmente, para empezar. Gracias a este de blog por Rockford Lhotka, hemos sido capaces de anular el control ComboBox con uno que podría correctamente unirse a selectedItem propiedad.

Ick.

Otros consejos

supongo que SelectedIndex se trata de una propiedad de sólo lectura.
Otro problema puede ser que el 0 no está en la colección

Creo que los puntos no se añaden antes de selectedIndex binded, y puesto que no hay ningún elemento, que está mostrando argumento está fuera del rango excepción.

Me volvería a evitar el retorno de una nueva colección de su propiedad Opciones. Usted está haciendo una suposición de que WPF sólo accede a la propiedad una vez.

Pero también tiene la opción de utilizar un CollectionView donde actualmente está devolviendo un ObservableCollection. Si está utilizando una arquitectura MVVM, su modelo de vista puede exponer a la propiedad como CollectionView y tiene la noción de un elemento "actual".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top