Je travaille sur la création d'un contrôle WPF CheckedComboBox. Je veux ajouter un SelectedValuesProperty que je pourrais lier via XAML. J'ai essayé plusieurs choses et je n'ai pas encore réussi à le faire fonctionner. Quelqu'un at-il des suggestions sur la façon d'aborder cela? Mon contrôle hérite de MultiSelector. Merci d'avance!Implémenter la propriété SelectedValues sur le contrôle WPF
C'est ce que j'ai à ce jour, problème est que je ne peux pas obtenir le ItemContainer de l'objet:
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;
}
}
}