Este documento presenta 5 lecciones sobre el manejo y vinculación de datos en WPF. La primera lección cubre plantillas de datos y su uso con controles de elementos. La segunda lección trata sobre DataTrigger y MultiDataTrigger. La tercera lección explica el uso del DataGrid de WPF. La cuarta lección describe ObjectDataProvider y XmlDataProvider. Finalmente, la quinta lección trata sobre la validación de datos en WPF.
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
http://bit.ly/SQSummit
A través de ejemplos vamos a ver porque las herramientas actuales de integración de datos han de experimentar una evolución significativa, tanto en su forma como en su fondo.
Taller desarrollando sitios web multiplataformaLuis Beltran
This is a tutorial of my workshop "Developing cross-platform websites with Open-Source technology: Making possible the impossible with ASP .NET Core" for students from Universidad Tecnica del Norte in Ibarra, Ecuador. This was a 5-day workshop where students learned how to develop a website with ASP .NET Core that runs on Linux and interacts with a MySQL database.
iDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a GoogleMiguel Ángel Pau
Presentación de la charla sobre datos estructurados que tuvo lugar en el evento solidario iDay organizado por Luís Villanueva - Webpositer.
Puedes ver el vídeo del evento completo aquí : https://vertice.cpd.ua.es/174468
https://www.miguelpau.es
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
http://bit.ly/SQSummit
A través de ejemplos vamos a ver porque las herramientas actuales de integración de datos han de experimentar una evolución significativa, tanto en su forma como en su fondo.
Taller desarrollando sitios web multiplataformaLuis Beltran
This is a tutorial of my workshop "Developing cross-platform websites with Open-Source technology: Making possible the impossible with ASP .NET Core" for students from Universidad Tecnica del Norte in Ibarra, Ecuador. This was a 5-day workshop where students learned how to develop a website with ASP .NET Core that runs on Linux and interacts with a MySQL database.
iDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a GoogleMiguel Ángel Pau
Presentación de la charla sobre datos estructurados que tuvo lugar en el evento solidario iDay organizado por Luís Villanueva - Webpositer.
Puedes ver el vídeo del evento completo aquí : https://vertice.cpd.ua.es/174468
https://www.miguelpau.es
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
1. Manejo y Vinculación de
Datos
D A N A E A G U I L A R G U Z M Á N .
M C P , M C T S
D A N A E A G U I L A R @ G M A I L . C O M
2. Contenido del Módulo
Lección 1. Plantillas de Datos
Lección 2. DataTrigger y MultiDataTrigger
Lección 3. El Datagrid de WPF
Lección 4. ObjectDataProvider y XmlDataProvider
Lección 5. Validación de datos
3. Lección 1. Plantillas de Datos
1. Implementando plantillas de datos
2. Usando plantillas con controles de ítems
3. DataTrigger y MultiDataTrigger
4. 1. Implementando plantillas
de datos
1. Definir el DataTemplate:
2. Aplicar el DataTemplate como ContentTemplate:
<DataTemplate>
<Label Content="{Binding Path=Nombre}"
BorderBrush="DarkBlue" Background="LightGreen"
BorderThickness="3" Foreground="Blue" />
</DataTemplate>
<Label Height="25" Name="label1" Width="150">
<Label.ContentTemplate>
<DataTemplate>
<!--Contenido del template-->
</DataTemplate>
</Label.ContentTemplate>
</Label>
5. 2. Usando plantillas con
controles de ítems
3. Aplicar el DataTemplate a la propiedad ItemTemplate:
<ListBox ItemsSource="{Binding}" Name="listBox1"
IsSynchronizedWithCurrentItem="True">
<ListBox.ItemTemplate>
<DataTemplate>
<!--Contenido del Template-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
7. 1. DataTrigger
DataTrigger
Similar a Property Trigger pero la propiedad que monitorea usa
binding
En vez de la propiedad Property usa la propiedad Binding
15. 2. El Datagrid de WPF
• ItemsSource, para vincular los datos
En C#:
En XAML, (teniendo un DataContext):
• Crea automáticamente las columnas para los campos de la
colección. (Según el tipo)
miDataGrid.ItemsSource = libros;
<DataGrid ItemsSource="{Binding}"></DataGrid>
16. 2. El Datagrid de WPF
• Columnas personalizadas
<DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Materia"
Width="2*" Binding="{Binding Path=Nombre}" />
<DataGridTextColumn Header="Código de la Materia"
Width="1*" Binding="{Binding Path=Codigo}" />
</DataGrid.Columns>
</DataGrid>
23. 1. XmlDataProvider
XmlDataProvider:
Binding a archivos XML (Solo lectura)
XPath posible también en la vinculación:
<Window.Resources>
<XmlDataProvider x:Key="libros" Source="Books.xml"
XPath="Books" />
</Window.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource libros},
XPath=Book[Year>2009]}" DisplayMemberPath="Title" />
24. Lección 5. Validación de datos
1. Validación de entradas de usuario
2. Validación de datos
3. Reglas de validación
25. 1. Validación de entradas de
usuario
Implementando IDataErrorInfo
public class Estudiante : System.ComponentModel.IDataErrorInfo
{
public string Nombre { get; set; }
public string Apellido { get; set; }
public string Error
{
get { /*...*/ }
}
public string this[string columna]
{
get { /*...*/ }
}
}
26. 1. Validación de entradas de
usuario
La propiedad ValidatesOnDataErrors
Mostrando los errores:
<TextBox.Text>
<Binding Source="{StaticResource MiColeccion}"
Path="Nombre" UpdateSourceTrigger="LostFocus"
ValidatesOnDataErrors="True"/>
</TextBox.Text>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
27. 2. Validación de datos
Validación de datos vinculados:
ExceptionValidationRule:
<TextBox>
<TextBox.Text>
<Binding Path="Propiedad1">
<Binding.ValidationRules>
<local:ReglaDeValidacion1 />
<local:ReglaDeValidacion2 />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Binding Path="Propiedad1">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
28. 3. Reglas de validación
1. Heredando la clase Abstracta ValidationRule:
public class MiValidador : System.Windows.Controls.ValidationRule
{
public override ValidationResult Validate(object value,
System.Globalization.CultureInfo cultureinfo)
{
string cadena = value.ToString();
if (string.IsNullOrWhiteSpace(cadena))
{
return new ValidationResult(false, "La cadena no puede ser vacia");
}
return new ValidationResult(true, null);
}
}
29. 3. Reglas de validación
La propiedad NotifyOnValidationError:
1. Manejando el evento de error:
<Binding NotifyOnValidationError="True" Mode="TwoWay"
Source="{StaticResource MiColeccion}" Path="Nombre">
<Binding.ValidationRules>
<local:MiValidador/>
</Binding.ValidationRules>
</Binding>
<Grid Validation.Error="Grid_Error">
private void Grid_Error(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
MessageBox.Show(e.Error.ErrorContent.ToString());
else
System.Diagnostics.Trace.WriteLine("El error de validacion fue quitado");
}