我在MVVM中使用AutoCompleteBox,并且我希望仅当用户单击项目或按回车键时才执行某些操作。
但是现在,当我使用键盘上的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“仅在回车或单击时被分配?
如果你有任何问题..。
非常感谢
发布于 2012-06-01 00:39:58
我找到了解决方案,我创建了一个新类。
如下所示:
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-31 02:55:42
在SelectedItem绑定中,您可以使用:
SelectedItem="{Binding IndicationSelected, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
这样,选定的项目只有在您关注其他项目时才会发生变化
https://stackoverflow.com/questions/10822445
复制相似问题