خطأ WPF: "يجب أن تكون مجموعة العناصر فارغة قبل استخدام OctemsSource."

StackOverflow https://stackoverflow.com/questions/1087944

  •  23-08-2019
  •  | 
  •  

سؤال

هل يعرف أحد لماذا أظل الحصول على "مجموعة العناصر يجب أن تكون فارغة قبل استخدام OpditesSource" -Error؟

هنا هو الرمز:

        <ScrollViewer Margin="8,8,8,8" Grid.Row="3" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">                  
                <WrapPanel Orientation="Vertical">
                    <ItemsControl ItemsSource="{Binding}" x:Name="CustomerList" >>
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <WrapPanel Orientation="Horizontal">
                                </WrapPanel>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <View:UserControlCustomerDetails>
                                </View:UserControlCustomerDetails>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </WrapPanel>
            </ScrollViewer>

هذا ما أقوم به في الرمز الخاص بي وراء:

 CustomerList.ItemsSource = _mainViewModel.CustomerCollection;

لاحظ أن CustomerCollection هو مجرد قائمة بسيطة<Customers>.

شكرا لمساعدتك!

هتافات

هل كانت مفيدة؟

المحلول

هل تم نسخ هذا الرمز حرفيا؟ هل لديك حقا اثنين من الأقواس الزاوية اليمنى (>>) عند نهاية ال <ItemsControl... خط؟ إذا كان الأمر كذلك، فقد يتم التعامل مع شريحة الزاوية اليمنى الثانية كحتوى نصي، يتم إضافته إلى مجموعة العناصر.

نصائح أخرى

أولا، قم بإزالة OctemsSource = "{BINDING}" من InditureControl. هذا يجب إصلاح الخطأ الخاص بك وأعتقد.

ثانيا، لست متأكدا مما إذا كان Walappanel الخاص بك سيعمل كما هو متوقع في هذه الحالة. من فهمي، سيقوم Wrappanel بالانفصال عندما يكون لديه أطفال متعددة تمتد من الحدود. في هذه الحالة، يحتوي Wrappanel الخاص بك فقط على طفل واحد، وهو عبادة.

يبدو أنك تستخدم نمط MVVM. في هذه الحالة، يجب ألا تقوم بتعيين مجموعة بوضوح ItemsSource خاصية ... بدلا من ذلك، يجب عليك تعيين ViewModel إلى DataContext التابع Window (أو UserControl). إذا كان لديك DataContext يكون _mainViewModel, ، يجب أن تكون الربط:

<ItemsControl ItemsSource="{Binding CustomerCollection}" ...

يستخدم DataGrid.Items.Clear();آمل أن يكون من المفيد ...

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