Pregunta

Estoy tratando de acceder a una Lista en un modelo de vista de un trabajador en segundo plano, pero recibo errores porque estoy cruzando hilos ...

Este es el método del problema en el modelo de vista: (Recibo la excepción en la primera línea de la función (ventana SMMainWindow ...))

public static MainWindowViewModel GetMainWindowViewModel() {
            SMMainWindow window = (SMMainWindow)System.Windows.Application.Current.MainWindow;
            if (window != null) {
                return (MainWindowViewModel)window.DataContext;
            }
            return null;
}

¿Alguna idea? Se agradecería un código de muestra

¿Fue útil?

Solución

Ayuda enormemente si configura su ViewModel con una instancia de su Despachador de Windows. Si tiene esto, puede usar Dispatcher.Invoke para buscar o establecer elementos dentro del ViewModel.

Otros consejos

Si es Freezable, es posible que pueda congelar su ventana. Esto debería permitirle acceder.

El enfoque del despachador es probablemente una buena opción, pero siempre siento que esto es una violación (parece que ViewModel trata la UI demasiado de cerca), pero probablemente sea una preferencia personal.

Cuestiono tu enfoque aquí, sin embargo. ¿Hay una buena razón por la cual un ViewModel está tratando de hacer referencia a otro? Consideraría repensar este enfoque ... Generalmente, cuando las personas hacen esto, acceden a ViewModel cuando realmente deberían estar tocando el Modelo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top