WPF- 항목 소스 및 선택된 index에 대한 바인딩 예외는?
-
12-09-2019 - |
문제
이 코드는 나에게 "범위에서 인수"예외를 제공합니다. 내가 바인딩을 제거 할 때 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로 노출시킬 수 있으며 "현재"항목의 개념이 있습니다.
제휴하지 않습니다 StackOverflow