문제

이 코드는 나에게 "범위에서 인수"예외를 제공합니다. 내가 바인딩을 제거 할 때 SelectedIndex,, ComboBox 잘 채워졌으며 예외는 던져지지 않습니다.

내가 뭘 잘못하고 있는지 아십니까? 이것은 (어떤 이유로) 불가능합니까?

암호:

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>
도움이 되었습니까?

해결책 3

Combobox 컨트롤은 처음부터 근본적으로 깨 졌다는 것이 밝혀졌습니다. 감사합니다 블로그 게시물 Rockford Lhotka에 의해, 우리는 Combobox 컨트롤을 선택된 시민 특성에 올바르게 바인딩 할 수있는 콤보 박스 컨트롤을 무시할 수있었습니다.

ick.

다른 팁

내가 추측 컨대 SelectedIndex 그것은 준비된 재산입니다.
다른 문제는 0이 될 수 있습니다. 0은 컬렉션에 없다는 것입니다.

선택한 린덱스가 부드러워지기 전에 항목이 추가되지 않았다고 생각하며 항목이 없으므로 범위에서 인수를 표시하고 있습니다.

나는 반환을 피할 것이다 새로운 옵션 속성에서 수집. WPF가 한 번만 속성에 액세스한다고 가정하고 있습니다.

그러나 현재 관측형 수집을 반환하는 CollectionView를 사용할 수있는 옵션도 있습니다. MVVM 아키텍처를 사용하는 경우 ViewModel은 속성을 CollectionView로 노출시킬 수 있으며 "현재"항목의 개념이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top