Revisión de los conceptos básicos de C# (Parte 4 de 4)

Capítulo 9 Enlace de datos

9.1 Conceptos básicos del enlace de datos

WPF proporciona tres tecnologías de enlace de datos: Binding, MultiBinding, PriorityBinding

La clase base de estos tres Bindings es BindingBase, y BindingBase hereda de MarkupExtension

En WPF, tanto ContentControl (como Button) como ItemsControl (como ListBox y ListView) proporcionan funciones integradas que permiten el enlace de datos flexible de un solo elemento de datos o una colección de elementos de datos, y pueden generar datos ordenados, filtrados y agrupados. vista

System.Windows.Data.Binding类:

Vincule la propiedad adicional de **"objetivo" con la propiedad de "fuente" de datos, que puede ser cualquier propiedad con modificador público

Sintaxis de enlace :

<object property="{Binding  declaration}" .../>
//object为绑定目标;declaration为绑定声明,如果有多个绑定声明,各绑定声明之间用逗号分隔
<Slider Name="slide1" Maximum="100" />
<TextBlock Text="{Binding ElementName=slide1,Path=Value}" />

9.1.1 Vinculaciones y expresiones de vinculación

La vinculación se refiere a vincular una propiedad de dependencia del "objetivo" a una propiedad CLR de la "fuente"

inserte la descripción de la imagen aquí

BindingExpression es el objeto básico que mantiene la conexión entre el origen del enlace y el destino del enlace . Una instancia de Binding puede contener varias instancias de BindingExpression.

9.1.2 Modo de vinculación (atributo de modo)

1. OneWay: encuadernación unidireccional

Características : cuando la fuente cambia, el destino también cambia automáticamente, lo cual es adecuado para el caso en que el control vinculado es un control implícito de solo lectura (como el número de estudiante), o la propiedad de destino no tiene una interfaz de control para cambiar (como el fondo del color de la mesa)

 <TextBlock
       Text="{Binding ElementName=listBox1,
       Path=SelectedItem.Content, Mode=OneWay}"/>

2. TwoWay: encuadernación bidireccional

Características : cuando uno de los cambios de origen o destino, el otro también cambiará automáticamente, adecuado para esquemas de interfaz de usuario editables o interactivos

 <TextBox Text="{Binding ElementName=listBox2,
                      Path=SelectedItem.Content,
                      Mode=TwoWay,
                      UpdateSourceTrigger=PropertyChanged}" />

3. OneTime: encuadernación única

Características : el destino solo se actualiza cuando se inicia la aplicación o cambia el contexto de los datos (DataContext) , después de lo cual el cambio del origen ya no afecta al destino, adecuado para vincular datos estáticos, es esencialmente una forma simplificada de vinculación OneWay

 <TextBox Text="{Binding ElementName=listBox3, 
                   Path=SelectedItem.Content,
                   Mode=OneTime}" />

4. OneWayToSource: enlace inverso

Características : cuando el objetivo cambia, la fuente también cambia, lo cual es justo lo contrario del enlace OneWay

<TextBox Text="{Binding ElementName=listBox4, 
            Path=SelectedItem.Content,
           Mode=OneWayToSource,
           UpdateSourceTrigger=PropertyChanged}" />

5. Predeterminado: obtenga automáticamente el valor de modo predeterminado del atributo de destino

Si no se declara el modo de vinculación, el valor predeterminado es Predeterminado. En general, las propiedades de control editables (como las propiedades de los cuadros de texto y las casillas de verificación) tienen por defecto el vínculo bidireccional, mientras que la mayoría de las demás propiedades tienen por defecto el vínculo unidireccional.

 <TextBox Text="{Binding ElementName=listBox2,
                   Path=SelectedItem.Content,
                   Mode=Default,
                   UpdateSourceTrigger=LostFocus}" />

9.1.3 Controlar cuándo actualizar la fuente (UpdateSourceTrigger)

  • Explícito: la fuente solo se actualiza cuando se llama al método UpdateSource de BindingExpression con código C#

  • LostFocus: actualiza automáticamente la fuente cuando el control de destino pierde el foco

  • PropertyChanged: la fuente se actualiza automáticamente cada vez que cambia la propiedad enlazada del control de destino

<TextBox Text="{Binding ElementName=listBox2,
                   Path=SelectedItem.Content,
                   Mode=TwoWay,
                   UpdateSourceTrigger=PropertyChanged}" />

9.1.4 Sintaxis de la ruta de vinculación (propiedad Path)

(1) El valor de Path es el nombre del atributo del objeto fuente (usado comúnmente, ejemplos en este capítulo)
(2) Otros casos de valores de Path:

(a) Al vincular a una propiedad adjunta, debe encerrarla entre paréntesis
(b) Use corchetes para especificar el indexador de la propiedad, y también puede usar indexadores anidados.
(c) Dentro del indexador, puede usar varios parámetros del indexador separados por comas y también puede usar paréntesis para especificar el tipo de cada parámetro (d )
Si la fuente es una vista de colección, puede usar una barra inclinada (/) Especifica el elemento actual
(e) se puede vincular a la fuente actual usando una ruta de punto (.)

9.1.5 Conversión de datos

Al describir enlaces de datos en XAML, WPF proporciona convertidores de tipos que convierten valores de algunos tipos en representaciones de cadenas. Sin embargo, en algunos casos, puede ser necesario que el desarrollador personalice el convertidor.

Por ejemplo, cuando el objeto de origen del enlace es una propiedad de tipo DateTime, en este caso, para que el enlace funcione correctamente, el valor de la propiedad debe convertirse primero en una representación de cadena personalizada.

Para asociar un convertidor con un enlace, generalmente cree una clase que implemente la interfaz IValueConverter y luego implemente dos métodos: el método Convert y el método ConvertBack.

9.2 Enlace de datos simple

9.2.1 Especificar el origen del enlace directamente en una sola propiedad

ElementName: la fuente es otro elemento WPF

<Slider Name="slide1" Width="100" Maximum="100" />
<Rectangle Width="{Binding ElementName=slide1,Path=Value}" Height="15" Fill="Red" />

Fuente: la fuente es un objeto CLR

<Page …… xmlns:src="clr-namespace:ch11.Examples">
<TextBlock Text="{Binding XueHao,
           Source={StaticResource info}}" />

Enlace a un objeto CLR con Fuente

El atributo Fuente de la clase Binding indica que la fuente de datos enlazada es un objeto CLR, que puede ser una instancia de una clase proporcionada por el marco .NET o una instancia de una clase personalizada.

Vinculación de destinos relativos con RelativeSource

RelativeSource: fuente y destino son el mismo elemento

RelativeSource indica que la "fuente" es ella misma. La propiedad RelativeSource es útil cuando se vincula una propiedad de un objeto a otra propiedad de sí mismo, o cuando se utiliza el enlace de datos en estilos (Style) o plantillas (ControlTemplate)

<Rectangle Width="100"
   Height="{Binding RelativeSource={RelativeSource Self},
   Path=Width}" />

9.2.2 Vinculación de múltiples propiedades a la misma fuente a través de DataContext

(1) Solo necesita declarar DataContext una vez en el elemento principal
(2) "Bingding Path=..." de cada elemento secundario se puede omitir como: "Bingding ..."

Capítulo 10 Bases de datos y el modelo de datos de entidad

10.1 Crear base de datos y tablas

10.1.1 Tecnología de acceso a datos ADO.NET

1. Use DataSet para acceder a la base de datos

Esta es una tecnología proporcionada por ADO.NET cuando se lanzó por primera vez, y se utiliza para procesar datos en un modo desconectado.Esta tecnología utiliza el DataSet que reside en la memoria local como la capa intermedia, es decir, el programa de aplicación interactúa con el DataSet y el DataSet luego interactúan con la base de datos

2. Use LINQ to DataSet para acceder a la base de datos

De esta forma, la aplicación puede usar la sintaxis LINQ para acceder al DataSet, que es más flexible y simple que la primera forma.

3. Utilice LINQ to SQL para acceder a la base de datos

Este método interactúa directamente con la base de datos de SQL Server, con alta eficiencia de ejecución y alta velocidad, pero este método no es compatible con otros tipos de bases de datos En LINQ to SQL, primero use el diseñador O/R para construir el modelo y luego use el modelo para pasar declaraciones SQL, ejecutar comandos SQL y acceder directamente a SQL Server con sintaxis LINQ

Cuando se usa esta tecnología, generalmente se usa para diseñar un modelo de objeto de nivel medio personalizado (middleware) y luego convertirlo en un archivo .dll para que otras aplicaciones lo llamen.

4. Use EF y LINQ to Entities para acceder a la base de datos (método recomendado)

Este es el método de acceso a la base de datos recomendado. Este modelo puede admitir varios tipos de bases de datos (incluidos SQL Server, Oracle, DB2, MySQL, etc.) y el motor de acceso a la base de datos de este modelo puede ser proporcionado directamente por el proveedor de la base de datos.

10.1.2 Introducción a SQL Server 2014

Características clave del motor de base de datos de SQL Server 2014 :

(1) Brinda migración entre clústeres de grupos de disponibilidad AlwaysOn para actualizaciones del sistema operativo
(2) Mejoras para programabilidad
(3) Mejoras para escalabilidad y rendimiento
(4) Brinda soporte para computación en la nube y soporte de big data

10.1.3 Crear una base de datos LocalDB

Presentamos LocalDB : una base de datos basada en servicios , pero solo accesible localmente

Pros : fácil de usar y no se requieren modificaciones para copiar proyectos y bases de datos de una computadora a otra

Al acceder a la base de datos LocalDB a través de la aplicación, VS2015 adjuntará automáticamente el archivo .mdf a la instancia predeterminada de LocalDB Cuando la base de datos ya no se use, LocalDB separará automáticamente el archivo .mdf de la instancia predeterminada .

El uso básico de crear una base de datos directamente en VS :

Método 1 : seleccione [Base de datos basada en servicios] para crear directamente una base de datos (MyDb.mdf)

inserte la descripción de la imagen aquí

Método dos :

(1) Seleccione [Modelo de datos de entidad ADO.NET]

inserte la descripción de la imagen aquí

(2) Seleccione [Código primero de la base de datos]

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

10.2 Creación de un modelo de datos de entidad con Entity Framework

10.2.1 Conceptos básicos de Entity Framework

inserte la descripción de la imagen aquí

Ventajas de Entity Framework:

(1) Las aplicaciones pueden funcionar a través de un modelo conceptual que incluye tipos con herencia, miembros complejos y relaciones (2) Las aplicaciones
ya no tienen dependencias codificadas en motores de datos o almacenamiento específicos
Cambio de la asignación entre el modelo conceptual y el esquema específico de almacenamiento sin cambiar el código de la aplicación
(4) Los desarrolladores pueden usar aplicaciones consistentes que se asignan a varios esquemas de almacenamiento (posiblemente implementados en diferentes sistemas de administración de bases de datos) Modelo de objetos
(5) Se pueden asignar varios modelos conceptuales a la misma arquitectura de almacenamiento

10.2.2 Patrones de desarrollo de Entity Framework

inserte la descripción de la imagen aquí

1. Base de datos primero

Primero cree la base de datos y luego genere manualmente el modelo de datos de entidad correspondiente (archivo .edmx) de acuerdo con la base de datos. Si la estructura de la base de datos cambia, el modelo debe generarse manualmente nuevamente

2. Modelo primero

Primero cree un modelo de datos de entidad (archivo .edmx) usando la plantilla proporcionada por la herramienta de desarrollo y luego genere una base de datos basada en el modelo de datos de entidad

3. Code First (Code First, técnica sugerida)

[Actual] Escriba primero la clase del modelo de datos y luego genere la base de datos en consecuencia

[Referencia] Cree primero la base de datos y luego genere la clase de modelo de datos de entidad. Este método solo se usa para generar código de referencia

Si el artículo es útil para usted, recuerde respaldarlo con un clic y tres enlaces ~

Supongo que te gusta

Origin blog.csdn.net/qq_50587771/article/details/122923088
Recomendado
Clasificación