سؤال

يعطيني هذا الرمز استثناء "حجة خارج النطاق". عندما أزيل الربط إلى 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 مع واحد يمكن أن يربط بشكل صحيح بملكية SenificitItem.

ick.

نصائح أخرى

أعتقد ذلك SelectedIndex إنها خاصية Readonly.
مشكلة أخرى يمكن أن تكون 0 انها ليست في المجموعة

أعتقد أنه لا تتم إضافة العناصر قبل أن يتم ربط SELECTINDEX، وبما أن هناك أي عنصر، فسيظهر وسيطة من استثناء النطاق.

أود تجنب العودة الجديد مجموعة من خاصية خياراتك. أنت تولي افتراضا أن WPF يصل فقط إلى العقار مرة واحدة.

ولكن لديك أيضا خيار استخدام CollectionView حيث يمكنك حاليا إرجاع الملاحظات. إذا كنت تستخدم بنية MVVM، فيمكن أن تعرض ViewModel الخاص بك خاصية CollectionView ولديه فكرة عنصر "جاري".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top