سؤال

هل من الممكن تغيير المحدد ListBoxItem من Code-Behind في Windows Presentation Foundation؟

إنها مهمة بسيطة جدًا حقًا، لدي Next و Previous الزر ويمثلون العنصر التالي والسابق في ListBox.لكن، myListBox.items هي بالطبع تمثيلات كائنية لما قمت بتخزينه في ملف ListBox.

لذا، كيف يمكن للمرء جلب ListBoxItem لتعيين IsSelected ملكية؟

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

المحلول

وربما كان أسهل شيء نفعله في قضيتك منذ تقومون به السابق والتالي هو مجرد زيادة في SelectedIndex:

//Increment
if(myListBox.SelectedIndex < myListBox.Items.Count -1)
     myListBox.SelectedIndex++;

//Decrement
if(myListBox.SelectedIndex > 0)
     myListBox.SelectedIndex--;

إذا <م> حقا ترغب في الحصول على ListBoxItem التي تشكل كائن كنت قد القيت في مربع القائمة الخاصة بك، يمكنك القيام به:

ListBoxItem item = myListBox.ItemContainerGenerator.ContainerFromItem(objectIWantToSelect);
item.IsSelected = true;

نصائح أخرى

لديك خيارات مختلفة:

  • استخدم الخاصية SelectedItem أو SelectedIndex لعنصر التحكم ListBox
  • إذا كان لديك ListBoxItem وليس ListBox الأصلي، فاستخدم ItemsControl.ItemsControlFromItemContainer(listboxitem) لاسترداد ListBox الأصلي (واستخدام الخصائص السابقة)
  • استخدام واجهات ICollectionView (CollectionViewSource.GetDefaultView) وطرقها (MoveCurrentToNext، MoveCurrentToPrevious)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top