WPFHi, I have a strange problem. After using an asynchronous call, I can not do focus to a particular control (textbox in this example). If I comment the lines where asynchronous calls, the focus works perfectly. i'm use MVVM Light 5.3.0 Why? Thx!
"0" - Grid.Column="1"
- utilidades:FocusExtension.IsFocused="{Binding IsFocused}"
- Text="{Binding Articulo.Codigo, UpdateSourceTrigger=PropertyChanged}" />
- private async void CargarRubros()
- {
- PrepareIsBusy();
- ShowIsBusyMessage = true;
- ActiveProgressRing = true;
- IsBusyCustomMessage("Cargando rubros...");
- try
- {
- Rubros =
- await
- Task.Factory.StartNew(() => new ObservableCollection
(_rubroService.TodosLosSubrubros())); - ActiveProgressRing = false;
- if (Rubros.Any())
- {
- RubroSeleccionado = Rubros.First();
- }
- else
- {
- IsBusyInfoMessage("No se encontraron rubros.");
- await Task.Factory.StartNew(() => Thread.Sleep(2000));
- }
- }
- catch (Exception)
- {
- IsBusyErrorMessage("Error al intentar obtener los rubros.");
- ActiveProgressRing = false;
- await Task.Factory.StartNew(() => Thread.Sleep(2000));
- }
- finally
- {
- ShowIsBusyMessage = false;
- ResetMessageAndImage();
- PrepareIsBusy();
- IsFocused = true;
- }
- }
- public static class FocusExtension
- {
- public static bool GetIsFocused(DependencyObject obj)
- {
- return (bool)obj.GetValue(IsFocusedProperty);
- }
- public static void SetIsFocused(DependencyObject obj, bool value)
- {
- obj.SetValue(IsFocusedProperty, value);
- }
- public static readonly DependencyProperty IsFocusedProperty =
- DependencyProperty.RegisterAttached(
- "IsFocused", typeof(bool), typeof(FocusExtension),
- new UIPropertyMetadata(false, null, OnCoerceValue));
- private static object OnCoerceValue(DependencyObject d, object baseValue)
- {
- if ((bool) baseValue)
- {
- ((UIElement) d).Focus();
- }
- else if (((UIElement) d).IsFocused)
- {
- Keyboard.ClearFocus();
- }
- return (bool)baseValue;
- }
- }
- private bool _isFocused;
- public bool IsFocused
- {
- get { return _isFocused; }
- set
- {
- _isFocused = value;
- RaisePropertyChanged("IsFocused");
- }
- }
Amit GuptaPosted Oct 22, 2016, 8:58 AM