3

我在 MVVM 中使用 AutoCompleteBox,并且我只想在用户单击项目或用户按 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 或单击时分配?

如果你有任何问题...

多谢

4

2 回答 2

0

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

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

这样选择的项目只有在你专注于其他事情时才会改变

于 2012-05-30T18:55:41.990 回答
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)
    {
    }
}
于 2012-05-31T16:39:57.797 回答