WPF - La unión a un ItemsSource Y SelectedIndex ha producido una excepción?
-
12-09-2019 - |
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>
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".