0
CheckedComboBox WPF 컨트롤을 만드는 중입니다. XAML을 통해 바인드 할 수있는 SelectedValuesProperty를 추가하려고합니다. 나는 몇 가지 다른 것들을 시도했지만 아직 작동하지 못했습니다. 누구든지이 접근 방법에 대한 제안이 있습니까? 내 컨트롤은 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;
}
}
}