此代码给我一个“参数超出范围”的异常。当我删除绑定到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控件与一个可以正确地绑定到SelectedItem属性。

伊克。

其他提示

我想这SelectedIndex它是一个只读属性。点击 其他问题可以是0它不是在收集

我认为项目不被的selectedIndex之前添加被绑定,并且由于不存在项目,它显示出范围异常的参数。

我会避免从你的选项属性返回集合。您制作的WPF只访问一次财产的假设。

但是,你也可以选择使用的CollectionView,你目前正在返回一个ObservableCollection的选项。如果您使用的是MVVM架构,您的视图模型可以公开的财产的CollectionView和它有一个“电流”项目的概念。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top