質問

このコードは私に、「引数の範囲外」の例外を提供します。私は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としてプロパティを公開することができ、それが「現在」の項目の概念を持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top