2009-06-04 2 views
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; 
    } 
    } 
} 

답변

0

: 이것은 내가 지금까지 무엇을 가지고

, 문제는 내가 객체에서 itemcontainer를 얻을 수있다. SelectedValuePath와 함께 SelectedValues ​​(SelectedItems가 아님)를 사용해야 객체의 Collection을 전달할 때 해당 객체에 대한 속성을 지정하여 반환 된 값을 사용할 수 있습니다. SelectedValues는 값의 모음을 반환합니다.