2010-02-11 33 views
6

Soy nuevo en WPF para el desarrollo de aplicaciones de Windows, solo quería mencionarlo primero. Estoy usando Visual Studio 2010 y .NET Framework 4.0.CRUD simple funciona con WPF y enlace de datos

Estoy trabajando en una herramienta de administración bastante simple. Por simplicidad, digamos que estoy trabajando con datos de Empleados. Creé un pequeño UserControl llamado UserDetail que tiene todos los campos relacionados con la clase Employee.

¿Cuál es la forma más sencilla de enlazar los controles de entrada en mi UserDetail? Esto podría tener una pantalla en blanco al crear una nueva instancia, o valores existentes si se edita una instancia existente.

He intentado lo siguiente en el constructor:

DataContext = _employee; 

Y unidos un control de este tipo en el XAML:

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/> 

Esto funciona, pero no parece ser la forma correcta para hacerlo. Esto parece un simple ejemplo, pero no he encontrado nada útil todavía.

¿Alguna sugerencia o enlace a un tutorial para este tipo de enlace simple?

+0

Probablemente descubrirá que una vez que haya entendido la magia de MVVM, no necesita un UserControl para sus datos de empleado, solo una plantilla. –

Respuesta

4

Como Joel dice que estás en el camino correcto. En algún momento debe configurar explícitamente el DataContext en el código subyacente. Esto normalmente se realizará en un nivel superior, como en su clase de ventana, y todos los demás DataContext se deben establecer mediante DataBindings.

Para su ejemplo específico dice que está trabajando en un UserControl. Debería poder enlazar el DataContext del control UserDetails directamente donde se está utilizando el control, y por lo tanto no debería tener que configurar el DataContext en el código subyacente para el UserControl. Al menos normalmente el usuario de su UserControl es quien le diría al UserControl qué datos usar.

Digamos que tiene una clase AllEmployees con una propiedad SelectedEmployee. Establece una instancia de este objeto como DataContext en su ventana, en el código subyacente. Ahora quiere que su ventana muestre los detalles del usuario de SelectedEmployee. El control DetallesUsuario se construye asumiendo que tiene un objeto Employee unida a su DataContext, y ahora que asegúrese de que tiene uno estableciendo esta en un DataBinding:

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl> 
    .. 
    <local:UserDetails DataContext={Binding SelectedEmployee} /> 
    .. 
</Window> 

También puede agregar una propiedad de los empleados a su clase DetallesUsuario cuales configurará el DataContext, si cree que esto se ve mejor en el enlace.

Para mejorar la separación entre la GUI y su modelo de dominio, debe conocer definitivamente the MVVM pattern. Inicialmente aprendí de mirar this video por Jason Dollinger un par de veces. El video te enseñará muchas cosas útiles sobre WPF. This question también parece tener algunos enlaces valiosos sobre el tema.

¡Buena suerte aprendiendo WPF! Es un poco diferente de otros marcos de GUI, por lo que la curva de aprendizaje puede ser un poco pronunciada. ¡Pero una vez que te adentras en él es un lugar maravilloso para estar!