2012-05-30 1 views
3

MVVM에서 AutoCompleteBox를 사용하고 사용자가 항목을 클릭하거나 Enter 키를 누를 때만 무언가를 실행하려고합니다.AutoCompleteBox Down/Up 키로 SelectedItem을 선택하지 마십시오.

하지만 지금은 selectedItem가 속성이 변경 ...

내 컨트롤 키보드의 키를 구성 \ 아래쪽을 사용할 때 :

내가 재산 "의 selectedItem"를 만들기 위해 할 수있는 일이다
<Controls:AutoCompleteBox ItemsSource="{Binding IndicationDtos, Mode=TwoWay}" 
           Width="100" SelectedItem="{Binding IndicationSelected, Mode=TwoWay}" 
           ValueMemberPath="Diagnosis" Text="{Binding Criteria, Mode=TwoWay}" MinimumPopulateDelay="250"/> 

입력시에만 할당 또는 클릭?

당신은 질문이있는 경우에는

...

덕분에 바인딩 당신의 selectedItem에서 많은

답변

0

해결책을 찾았습니다. 새 클래스를 만들었습니다.

이 같이

:

public class AutoCompleteBoxEx : AutoCompleteBox 
{ 
      public static readonly DependencyProperty SelectionBoxItemProperty = 
     DependencyProperty.Register(
     "SelectionBoxItem", 
     typeof(object), 
     typeof(AutoCompleteBox), 
     new PropertyMetadata(OnSelectionBoxItemPropertyChanged)); 

    public object SelectionBoxItem 
    { 
     get 
     { 
      return GetValue(SelectionBoxItemProperty); 
     } 

     set 
     { 
      SetValue(SelectionBoxItemProperty, value); 
     } 
    } 

    protected override void OnDropDownClosing(RoutedPropertyChangingEventArgs<bool> e) 
    { 
     base.OnDropDownClosing(e); 
     SelectionBoxItem = SelectionAdapter.SelectedItem; 
    } 

    private static void OnSelectionBoxItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
    } 
} 
0

, 당신은 사용할 수 있습니다

SelectedItem="{Binding IndicationSelected, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" 

그런 식으로 선택한 항목 만 변경 당신이 뭔가에 집중할 때 else

+0

들으,하지만 난 더 UpdateSourceTrigger이 없다 = LostFocus, 내가 실버 라이트와 함께 작동이 그것에 대해입니까? 다른 아이디어? – Benjamin

+0

아아 아니, 실버 라이트를 위해 뭔가 움직이는 습관이 필요하다. 다음을 참조하십시오 : http://stackoverflow.com/questions/6145994/updatesourcetrigger-propertychanged-in-silverlight – Slick86

+0

LostFocus로 문제를 해결할 수있는 방법을 알고 있습니까? – Benjamin