在WPF控件上实现SelectedValues属性

在WPF控件上实现SelectedValues属性,wpf,itemscontrol,multi-select,selectedvalue,Wpf,Itemscontrol,Multi Select,Selectedvalue,我正在创建一个CheckedComboBox WPF控件。我想添加可通过XAML绑定的SelectedValuesProperty。我试过一些不同的方法,但还没能成功。有人对如何处理这个问题有什么建议吗?我的控件继承自MultiSelector。提前谢谢 这就是我到目前为止遇到的问题,问题是我无法从对象获取itemcontainer: public static readonly DependencyProperty SelectedValuesProperty = DependencyProp

我正在创建一个CheckedComboBox WPF控件。我想添加可通过XAML绑定的SelectedValuesProperty。我试过一些不同的方法,但还没能成功。有人对如何处理这个问题有什么建议吗?我的控件继承自MultiSelector。提前谢谢

这就是我到目前为止遇到的问题,问题是我无法从对象获取itemcontainer:

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;
    }
  }
}

我正试图解决同样的问题。我需要一个SelectedValues(而不是SelectedItems)与SelectedValuePath一起使用,这样,如果传入一个对象集合,我就可以在这些对象上指定一个属性来使用返回的值。SelectedValues将返回一组值