Реализуйте свойство SelectedValues ​​в элементе управления WPF - PullRequest
0 голосов
/ 04 июня 2009

Я работаю над созданием элемента управления CheckedComboBox WPF. Я хочу добавить SelectedValuesProperty, через который я мог бы связать через XAML. Я пробовал несколько разных вещей и пока не смог заставить его работать. У кого-нибудь есть какие-либо предложения о том, как подойти к этому? Мой контроль наследуется от MultiSelector. Заранее спасибо!

Это то, что у меня до сих пор, проблема в том, что я не могу получить предметный контейнер от объекта:

public static readonly DependencyProperty SelectedValuesProperty = DependencyProperty.Register( 
  "SelectedValues", typeof( IEnumerable ), typeof( CheckedComboBox ),
      new FrameworkPropertyMetadata( ( IEnumerable ) null,
        new PropertyChangedCallback( OnSelectedValuesChanged ) ) );

private static void OnSelectedValuesChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
  CheckedComboBox combo = ( CheckedComboBox ) d;
  IEnumerable oldValue = ( IEnumerable ) e.OldValue;
  IEnumerable newValue = ( IEnumerable ) e.NewValue;

  // unselect all the old vlaues
  if ( oldValue != null )
  {
    foreach ( object obj in oldValue )
    {
      CheckedComboBoxItem item = obj as CheckedComboBoxItem;
      if ( item == null )
        item = combo.ItemContainerGenerator.ContainerFromItem( obj ) as CheckedComboBoxItem;
      if ( item != null && item.IsEnabled && item.IsSelected )
        item.IsSelected = false;
    }
  }

  // select all the new values
  if ( e.NewValue != null )
  {
    foreach ( object obj in newValue )
    {
      CheckedComboBoxItem item = obj as CheckedComboBoxItem;
      if ( item == null )
        item = combo.ItemContainerGenerator.ContainerFromItem( obj ) as CheckedComboBoxItem;
      if ( item != null && item.IsEnabled && !item.IsSelected )
        item.IsSelected = true;
    }
  }
}

1 Ответ

0 голосов
/ 07 января 2011

Я пытаюсь выяснить эту же проблему. Мне нужно SelectedValues ​​(не SelectedItems) для использования в сочетании с SelectedValuePath, чтобы, если я передам коллекцию объектов, я мог указать свойство этих объектов для использования возвращаемых значений. SelectedValues ​​возвращает коллекцию значений.

...