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"/>

EnterまたはClickでのみプロパティ「SelectedItem」が割り当てられるようにするにはどうすればよいですか?

もしあなたに質問があるのなら...

どうもありがとう

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 に答える