0
私はCheckedComboBox WPFコントロールの作成に取り組んでいます。 SelectedValuesPropertyを追加して、XAML経由でバインドできるようにします。私はいくつかのことを試してきましたが、それをまだ働かせることができませんでした。誰もこれにアプローチする方法についての提案はありますか?私のコントロールはMultiSelectorを継承しています。前もって感謝します!WPFコントロールでSelectedValuesプロパティを実装する
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;
}
}
}