2009-12-03 31 views
0

此代碼給我一個「參數超出範圍」異常。當我刪除綁定到SelectedIndex時,ComboBox填充得很好,並且不會引發異常。WPF - 綁定到一個ItemsSource和SelectedIndex引發異常?

任何想法我做錯了什麼?這(出於某種原因)不可能嗎?

代碼:

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> 
+0

查看下面的答案(不能標記我自己2天)。 – 2009-12-03 23:02:58

回答

1

原來,ComboBox控件從根本上被打破。感謝Rockford Lhotka的這個Blog Post,我們能夠用一個可以正確綁定到SelectedItem屬性的組件覆蓋ComboBox控件。

Ick。

1

我想這SelectedIndex它是一個只讀屬性。
其他問題可以是0它不在集合中

1

我認爲ItemsIn未被添加之前selectedIndex是綁定,並且因爲沒有項目,它顯示的參數超出範圍異常。

+1

這是真的,但不是解決問題的方法:) – 2009-12-03 23:01:34

0

我會避免從您的Options屬性返回集合。你假設WPF只訪問一次屬性。

但是,您也可以選擇在當前正在返回ObservableCollection的位置使用CollectionView。如果您使用的是MVVM架構,那麼您的ViewModel可以將該屬性公開爲CollectionView,並且它具有「當前」項目的概念。