2012-05-30 37 views
3

我在MVVM中使用AutoCompleteBox,我想要執行的事情只有當用戶點擊該項目或如果用戶按Enter鍵。AutoCompleteBox不要選擇的項目上/下鍵

但現在當我使用下來\向上鍵鍵盤上的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」是隻在Enter上分配或單擊?

如果您有任何問題...

非常感謝

回答

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綁定,您可以使用:

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

這樣選擇的項目只更改當你專注的東西否則

+0

THX,但我沒有UpdateSourceTrigger =引發LostFocus,我使用Silverlight一起工作,這是什麼?其他想法? – Benjamin

+0

啊,不,對於silverlight,你需要一些自定義的移動。看到這個:http://stackoverflow.com/questions/6145994/updatesourcetrigger-propertychanged-in-silverlight – Slick86

+0

我不明白如何與LostFocus我可以解決我的問題? – Benjamin

相關問題