es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Declarando el ViewModel de tiempo de diseño para una ventana de Avalonia.

Estoy buscando el enfoque correcto para declarar el ViewModel en tiempo de diseño para una ventana de Avalonia.

Algunos ejemplos sugieren:

d:DataContext=” {d:DesignInstance viewModels:LoginViewModel, IsDesignTimeCreatable=True} ”

Esto genera un error:

XamlParseException en la línea 5:5: No se puede resolver el tipo DesignInstance desde el espacio de nombres http://schemas.microsoft.com/expression/blend/2008

La plantilla predeterminada de Avalonia MVVM sugiere:

<design.datacontext>

</design.datacontext>

Si el ViewModel requiere parámetros, genera un error:

XamlLoadException en la línea 16:10: No se puede encontrar un constructor público para el tipo Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()

Supongo que agregar un constructor sin parámetros por defecto es una opción.

Con MvvmLight/WPF, solía hacer referencia al ViewLocator como un recurso estático:

DataContext=”{Binding Source={StaticResource Locator}, Path=MainWindow}”

Esa es una opción, aunque todavía no he encontrado la manera correcta de declarar y hacer referencia al recurso.

¿Cuál es el enfoque recomendado aquí? Si quiero mostrar datos en tiempo de diseño, diría que solo la tercera opción funcionaría. Que no es la opción mostrada en los ejemplos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto de IT especializado en C#, .NET, MVVM y AvaloniaUI, el enfoque recomendado para declarar un ViewModel en tiempo de diseño para una ventana de Avalonia sería utilizar el siguiente código:

    <design.datacontext>
    <vm:mainwindowviewmodel></vm:mainwindowviewmodel>
    </design.datacontext>

    Sin embargo, si el ViewModel requiere parámetros, es posible que necesite agregar un constructor sin parámetros por defecto o encontrar formas alternativas de pasar los parámetros. Aunque algunos ejemplos sugieren usar d:DataContext="{d:DesignInstance viewModels:LoginViewModel, IsDesignTimeCreatable=True}", esto podría resultar en una XamlParseException si el tipo DesignInstance no puede resolverse. Como alternativa, podría hacer referencia al ViewLocator como un recurso estático, aunque la forma correcta de declarar y hacer referencia al recurso puede variar según su implementación específica. Tenga en cuenta que si desea mostrar datos en tiempo de diseño, es posible que deba seguir un enfoque diferente al que se muestra en los ejemplos.

Comments are closed.