Pergunta

Este código me dá um “argumento fora da faixa” exceção. Quando eu remover a ligação ao SelectedIndex, o ComboBox é preenchida apenas multa e nenhuma exceção é lançada.

Qualquer idéia do que estou fazendo de errado? É este o (por alguma razão) não é possível?

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>
Foi útil?

Solução 3

Acontece que o controle ComboBox foi fundamentalmente quebrada para começar. Graças a este Blog Post por Rockford Lhotka, fomos capazes de substituir o controle caixa de combinação com um que poderia corretamente vincular a SelectedItem propriedade.

Ick.

Outras dicas

Eu acho que SelectedIndex é uma propriedade somente leitura.
Outro problema pode ser que 0 não é na coleção

Eu acho que os itens não são adicionados antes selectedIndex é Binded, e uma vez que não há nenhum item, ele está mostrando Argumento fora de exceção Range.

Gostaria de evitar retornando um new coleção de sua propriedade Opções. Você está fazendo uma suposição de que WPF única acessa a propriedade uma vez.

Mas você também tem a opção de usar um CollectionView onde você está atualmente retornando um ObservableCollection. Se você estiver usando uma arquitetura MVVM, o ViewModel pode expor a propriedade como CollectionView e tem a noção de um item de "atual".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top