向下/向上键上的AutoCompleteBox不是SelectedItem

时间:2012-05-30 18:51:43

标签: mvvm autocomplete selecteditem

我在MVVM中使用AutoCompleteBox,我想只在用户点击Item或者用户按Enter键时执行某些操作。

但现在当我在键盘上使用down \ Up键时,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上分配或单击?

如果您有任何疑问......

非常感谢

2 个答案:

答案 0 :(得分:0)

在SelectedItem绑定中,您可以使用:

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

这样选择的项目只会在你专注于其他内容时发生变化

答案 1 :(得分: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)
    {
    }
}