hat was ich habe:Feuer Lostfocus-Ereignis nur dann, wenn IsKeyboardFocusWithin Property einen falschen Wert
ich eine Combobox haben. Hier ist der Lost-Focus mit Befehl in MVVM Stil:
<ComboBox .............>
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<i:InvokeCommandAction Command="{Binding DataContext.OrderIdLostFocusCommand, UpdateSourceTrigger=PropertyChanged,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
Und im Ansichtsmodell:
//Constructor
public DispatchViewModel(IEventAggregator _eventAggregator)
{
eventAggregator = _eventAggregator;
//Some Code
OrderIdLostFocusCommand = new RelayCommand(Execute_OrderId_LostFocus);
}
public RelayCommand OrderIdLostFocusCommand { get; set; }
private void Execute_OrderId_LostFocus(object obj)
{
//Some Calculations
eventAggregator.GetEvent<MoveFocusToDatePickerEvent>().Publish(true);
}
in den Code-Behind:
//Constructor
public DispatchView(DispatchViewModel _viewModel, IEventAggregator _eventAggregator)
{
InitializeComponent();
this.DataContext = _viewModel;
_eventAggregator.GetEvent<MoveFocusToDatePickerEvent>().Subscribe(MoveFocusToDateOfDispatch);
}
private void MoveFocusToDateOfDispatch(bool obj)
{
this.Dispatcher.BeginInvoke((Action)delegate { dpInvoice.Focus(); }, DispatcherPriority.Render);
}
Problem:
Wenn die Combobox fokussiert ist und ich versuche, DropDown zu öffnen, wird das lostfocus-Ereignis ausgelöst und der Fokus wird auf DataPicker gesetzt.
Was ich will:
Stattdessen möchte ich nur Lost-Focus-Ereignis ausgelöst, wenn Eigentum der ComboBox IsKeyboardFocusWithin falsch ist.
Aber wie kann ich einen Trigger in DataTrigger verwenden? – Vishal
DataTriggers sind allmächtig. –
Danke H.B. das funktioniert wie erwartet. – Vishal