WPF - のItemsSourceに結合し、SelectedIndexをが例外をスロー?
-
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コントロールは基本的に開始するように壊れていたが判明しました。このロックフォードLhotkaによってポストをブログ、私たちはとComboBoxコントロールを無効にすることができました正しくプロパティをのSelectedItemに結合する可能性があり1。
嫌ます。
他のヒント
私はSelectedIndex
が、それは読み取り専用プロパティであることを推測する。
他の問題は、それがコレクションにない0ということができます。
私はアイテムがバインドされselectedIndexの前に追加されていないことを考えると、何のアイテムが存在しないので、レンジの例外のうちの引数を示している。
私はあなたのOptionsプロパティからの新しいのコレクションを返す避けるだろう。あなたは、WPFは一度だけプロパティにアクセスする仮定を作っている。
しかし、あなたはまた、あなたが現在のObservableCollectionを返しているCollectionViewを使用するオプションを持っています。あなたはMVVMアーキテクチャを使用している場合は、あなたのViewModelはCollectionViewとしてプロパティを公開することができ、それが「現在」の項目の概念を持っています。
所属していません StackOverflow