SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Mejorando la funcionalidad
y usabilidad de las
aplicaciones
D A N A E A G U I L A R G U Z M Á N .
M C T , 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
Contenido del Módulo
Lección 1. Integrando controles WinForms y WPF.
Lección 2. Implementando Drag and Drop.
Lección 3. Globalización, localización y accesibilidad.
Lección 1. Integrando
controles WinForms y WPF
1. Usando ElementHosts en Windows Forms
2. Usando ControlHosts en WPF
1.Usando ElementHosts en
Windows Forms
1. Agregando ElementHost
2. Controles WPF en WinForms:
System.Windows.Controls.Expander expander =
new System.Windows.Controls.Expander();
expander.Header = "WPF Expander";
expander.Content = "Contenido";
elementHost1.Child = expander;
2. Usando ControlHosts en WPF
Agregando controles Winforms en WPF desde C#:
1. Agregar referencia a System.Windows.Forms
2. Declarar e inicializar los controles:
3. Usarlos normalmente:
System.Windows.Forms.OpenFileDialog dialogo =
new System.Windows.Forms.OpenFileDialog();
System.Windows.Forms.DialogResult resultado;
resultado = dialogo.ShowDialog();
if (resultado == System.Windows.Forms.DialogResult.OK)
{
MessageBox.Show(dialogo.FileName);
}
2. Usando ControlHosts en WPF
Agregando controles Winforms en WPF en XAML:
1. Referenciar System.Windows.Forms.Integration
2. Referenciar el namespace System.Windows.Forms
xmlns:my="clr-
namespace:System.Windows.Forms.Integration;
assembly=WindowsFormsIntegration"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
2. Usando ControlHosts en
WPF
Agregando controles Winforms en WPF en XAML:
3. Agregar WindowsFormsHost y los controles WinForms dentro.
* Los controles WinForms tomarán el tamaño del WindowsFormsHost
<my:WindowsFormsHost Margin="48,106,30,56" Name="winFormsHost1">
<wf:Button Text="Un Botón Windows Forms" />
</my:WindowsFormsHost>
Lección 2. Implementando
Drag and Drop
1. Drag and Drop en aplicaciones
2. Drag and Drop entre aplicaciones
1.Drag and Drop en
aplicaciones
1.Drag and Drop en
aplicaciones
2. Drag and Drop entre
aplicaciones
El sistema soporta por defecto Drag & Drop entre aplicaciones .NET
Condiciones:
 El control destino debe permitir uno de los drag Effects especificados
en la llamada a DoDragDrop
 El control destino debe aceptar los datos en el formato especificado
en la llamada a DoDragDrop
Lección 3. Globalización,
localización y accesibilidad
1. Manejo de recursos locales
2. Usando configuraciones de culturas en validadores y conversores.
3. Usando archivos de recursos para localización.
4. Configuraciones regionales.
5. Implementando características de accesibilidad.
1. Manejo de recursos locales
Cultura de la aplicacion:
 en indica el idioma inglés
 es indica el idioma español
 de indica el idioma alemán
Cultura específica:
 en-CA indica el idioma inglés y la region de Canada
 af-ZA indica el idioma africano y la region de Sud Africa
 es-ES indica el idioma español y la region de España
1. Manejo de recursos locales
• Modificando la cultura de la aplicación en Application.Startup:
(CurrentCulture y CurrentUICulture)
• Especificando la cultura neutra en WPF:
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo("es-ES");
[assembly: NeutralResourcesLanguage("en-US",
UltimateResourceFallbackLocation.Satellite)]
1. Manejo de recursos locales
Localizando la aplicación:
1. Agregar el atributo UICulture al proyecto
 Al compilar se generan los subdirectorios para las culturas
2. Marcar las propiedades localizables con el atributo Uid (para cada
archivo XAML)
<UICulture>es-ES</UICulture>
<Button x:Uid="Button_1" Name="Button1">Un botón</Button>
1. Manejo de recursos locales
2. Marcar las propiedades localizables con el atributo Uid (para cada
archivo XAML)
3. Extraer el contenio localizable
4. Traducir
5. Crear los assemblies Satelite
msbuild /t:updateuid miAplicacion.csproj
locbaml /generate es-ESmiAplicacion.resources.dll
/trans:miAplicacion.resources.FrenchCan.csv /cul:fr-CA /out:fr-CA
3. Usando configuraciones de culturas
en validadores y conversores.
1. Agregar un traductor a nuestros conversores:
[ValueConversion(typeof(string), typeof(string))]
public class LanguageConverter : IValueConverter
{
Traductor _traductor = new Traductor();
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
string cadena = (string)value;
switch (culture.ToString())
{
case "fr-FR":
return _traductor.EspaniolAFrances(cadena);
case "de-DE":
return _traductor.EspaniolAAleman(cadena);
default:
return cadena;
}
}
3. Usando configuraciones de culturas
en validadores y conversores.
1. Agregar un traductor a nuestros conversores (ConvertBack):
public object ConvertBack(object value, Type targetType, object
parameter, System.Globalization.CultureInfo culture)
{
string cadena = (string)value;
switch (culture.ToString())
{
case "fr-FR":
return _traductor.FrancesAEspaniol(cadena);
case "de-DE":
return _traductor.AlemanAEspaniol(cadena);
default:
return cadena;
}
}
4. Usando archivos de
recursos para localización.
1. Agregar un folder de Recursos
2. Agregar archivos resx (Resource.de-DE.resx, Resource.en-US.resx,
Resources.resx)
4. Usando archivos de
recursos para localización.
3. Cambiar el modificador de acceso del archivo resx a public
4. Agregar el namespace del recurso en nuestra ventana:
5. Agregar un Binding a la propiedad deseada:
xmlns:resx="clr-namespace:WpfApplication1.Resources"
<TextBlock Text="{x:Static resx:Resource.CadenaSaludo}" />
5. Configuraciones regionales.
1. Se aplican al cambiar la cultura de la aplicación
2. Los datos que sin formato no serán afectados por un cambio de
cultura.
3. Aplicar formatos a los datos como fechas, cantidades monetarias
4. Usar IFormatProvider en los metodos Convert
DateTime.Now.ToString(CultureInfo.CurrentCulture);
5. Configuraciones regionales.
5. Validar con CODE_ANALYSIS en VS o con FxCop
6. Para datos que no se muestran al usuario usar InvariantCulture
DateTime.Now.ToString(CultureInfo.InvariantCulture);
6. Implementando características
de accesibilidad.
• WPF usa el nuevo API de accesibilidad UIA (UI Automation)
• UIA expone programáticamente información a usuarios de tecnologías
asistidas (AT).
6. Implementando características
de accesibilidad.
Propiedades requeridas para la accesibilidad:
•Name
• Debe ser claro. No usar notación húngara.
•Alt Text
• Cuando el texto no es visible o se usan imágenes
•Automation ID
• Identifica al elemento UIA como único
<ListBox AutomationProperties.Name = "Estados"/>
6. Implementando características
de accesibilidad.
Navegación por teclado:
• Toda la aplicación debe ser navegable usando solo el teclado
•Especificar el orden de tabulación
•Especificar teclas de acceso directo.
6. Implementando características
de accesibilidad.
Navegación por teclado:
•Las teclas de navegación deben ser funcionales:
• TAB, SHIFT+TAB, CTRL+TAB, CTRL+SHIFT+TAB, UPARROW, DOWNARROW,
LEFTARROW, y RIGHTARROW.
•Se puede cambiar la navegación:
Menu menuNavegable = new Menu();
/*...*/
KeyboardNavigation.SetTabNavigation(menuNavegable,
KeyboardNavigationMode.Cycle);
6. Implementando características
de accesibilidad.
DPI alto:
• WPF es dpi-aware pero:
• Evitar hardcodear layouts, tamaños o fuentes,
• Usar porcentajes donde sea posible.
6. Implementando características
de accesibilidad.
Contraste Alto:
•El modo de contraste alto debe:
• Remover animaciones flasheantes
• Remover o reducir animaciones de transición
• Omitir imágenes no funcionales, gradientes o patrones detrás del texto.
•No se debe hardcodear colores.
•Se debe tener iconos de color alternativo para alto contraste.
6. Implementando características
de accesibilidad.
Validar la accesibilidad de nuestra aplicación:
• UI Accessibility Checker:
• http://acccheck.codeplex.com/

Mais conteúdo relacionado

Mais procurados

[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)Eudris Cabrera
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-DesarrolloLuis Fernando Aguas Bucheli
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo WebEmilio Aviles Avila
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Rafael Franco
 
Asp .net
Asp .netAsp .net
Asp .netmellcv
 
dotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarialdotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarialRefresh Maracaibo
 
Apache click
Apache clickApache click
Apache clickntomasto
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre aspkarenReyes152
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSArsys
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 
INTRODUCCION ARM AZURE
INTRODUCCION ARM AZURE INTRODUCCION ARM AZURE
INTRODUCCION ARM AZURE Ivan Martinez
 
Introducción a ARM (Azure Resource Manager)
Introducción a ARM (Azure Resource Manager) Introducción a ARM (Azure Resource Manager)
Introducción a ARM (Azure Resource Manager) Cesar Herrada
 
Oracle 11g galo saquinaula
Oracle 11g galo saquinaulaOracle 11g galo saquinaula
Oracle 11g galo saquinaulaGalo Saquinaula
 

Mais procurados (20)

[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Asp .net
Asp .netAsp .net
Asp .net
 
Presentación1
Presentación1Presentación1
Presentación1
 
Trabajo de jdbc
Trabajo de jdbcTrabajo de jdbc
Trabajo de jdbc
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
dotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarialdotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarial
 
Apache click
Apache clickApache click
Apache click
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre asp
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJS
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Acciones
AccionesAcciones
Acciones
 
INTRODUCCION ARM AZURE
INTRODUCCION ARM AZURE INTRODUCCION ARM AZURE
INTRODUCCION ARM AZURE
 
Introducción a ARM (Azure Resource Manager)
Introducción a ARM (Azure Resource Manager) Introducción a ARM (Azure Resource Manager)
Introducción a ARM (Azure Resource Manager)
 
Oracle 11g galo saquinaula
Oracle 11g galo saquinaulaOracle 11g galo saquinaula
Oracle 11g galo saquinaula
 
Resumen jee
Resumen jeeResumen jee
Resumen jee
 

Destaque

ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parcialesASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parcialesDanae Aguilar Guzmán
 
WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaDanae Aguilar Guzmán
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosDanae Aguilar Guzmán
 
Introduccion my sql
Introduccion my sqlIntroduccion my sql
Introduccion my sqljaiverlh
 
Introducción a la accesibilidad Web
Introducción a la accesibilidad WebIntroducción a la accesibilidad Web
Introducción a la accesibilidad WebManuel Razzari
 
Introducción a la accesibilidad web
Introducción a la accesibilidad webIntroducción a la accesibilidad web
Introducción a la accesibilidad webtayzee
 
HTML - HyperText Markup Language - HTML5
HTML - HyperText Markup Language - HTML5HTML - HyperText Markup Language - HTML5
HTML - HyperText Markup Language - HTML5Israel Messias
 
Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)ITcom
 
2 (de 3). Evaluación de Usabilidad
2 (de 3).  Evaluación de Usabilidad2 (de 3).  Evaluación de Usabilidad
2 (de 3). Evaluación de UsabilidadDCU_MPIUA
 
UX y SEO: Como posicionar tu web con técnicas de usabilidad
UX y SEO: Como posicionar tu web con técnicas de usabilidadUX y SEO: Como posicionar tu web con técnicas de usabilidad
UX y SEO: Como posicionar tu web con técnicas de usabilidadmaspixel
 
Usabilidad y ROI en las empresas - 2016
Usabilidad y ROI en las empresas - 2016Usabilidad y ROI en las empresas - 2016
Usabilidad y ROI en las empresas - 2016maspixel
 
Async / Await: Programación asíncrona para dummies (12 horas visual studio)
Async / Await: Programación asíncrona para dummies (12 horas visual studio)Async / Await: Programación asíncrona para dummies (12 horas visual studio)
Async / Await: Programación asíncrona para dummies (12 horas visual studio)Eduard Tomàs
 
Módulo 4: Usabilidad Web
Módulo 4: Usabilidad WebMódulo 4: Usabilidad Web
Módulo 4: Usabilidad WebMario Carvajal
 
HTML5: empieza hoy
HTML5: empieza hoyHTML5: empieza hoy
HTML5: empieza hoyMarta Armada
 
Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Paradigma Digital
 
Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño webciwmx
 

Destaque (20)

ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parcialesASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parciales
 
WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralela
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datos
 
Introduccion my sql
Introduccion my sqlIntroduccion my sql
Introduccion my sql
 
Html5
Html5Html5
Html5
 
Introducción a la accesibilidad Web
Introducción a la accesibilidad WebIntroducción a la accesibilidad Web
Introducción a la accesibilidad Web
 
Introducción a la accesibilidad web
Introducción a la accesibilidad webIntroducción a la accesibilidad web
Introducción a la accesibilidad web
 
HTML - HyperText Markup Language - HTML5
HTML - HyperText Markup Language - HTML5HTML - HyperText Markup Language - HTML5
HTML - HyperText Markup Language - HTML5
 
Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)
 
2 (de 3). Evaluación de Usabilidad
2 (de 3).  Evaluación de Usabilidad2 (de 3).  Evaluación de Usabilidad
2 (de 3). Evaluación de Usabilidad
 
UX y SEO: Como posicionar tu web con técnicas de usabilidad
UX y SEO: Como posicionar tu web con técnicas de usabilidadUX y SEO: Como posicionar tu web con técnicas de usabilidad
UX y SEO: Como posicionar tu web con técnicas de usabilidad
 
Historia de HTML5
Historia de HTML5Historia de HTML5
Historia de HTML5
 
Usabilidad y ROI en las empresas - 2016
Usabilidad y ROI en las empresas - 2016Usabilidad y ROI en las empresas - 2016
Usabilidad y ROI en las empresas - 2016
 
Async / Await: Programación asíncrona para dummies (12 horas visual studio)
Async / Await: Programación asíncrona para dummies (12 horas visual studio)Async / Await: Programación asíncrona para dummies (12 horas visual studio)
Async / Await: Programación asíncrona para dummies (12 horas visual studio)
 
Módulo 4: Usabilidad Web
Módulo 4: Usabilidad WebMódulo 4: Usabilidad Web
Módulo 4: Usabilidad Web
 
HTML5: empieza hoy
HTML5: empieza hoyHTML5: empieza hoy
HTML5: empieza hoy
 
Introducción HTML5 y CSS3
Introducción HTML5 y CSS3Introducción HTML5 y CSS3
Introducción HTML5 y CSS3
 
HTML5
HTML5HTML5
HTML5
 
Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3Introducción a HTML5 y CSS3
Introducción a HTML5 y CSS3
 
Introducción al Diseño web
Introducción al Diseño webIntroducción al Diseño web
Introducción al Diseño web
 

Semelhante a MejorandoUsabilidadAplicaciones

LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"Alberto Ruibal
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Androidjezabelink
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0Ander Martinez
 
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)Ander Martinez
 
Exclusivo .net
Exclusivo .netExclusivo .net
Exclusivo .net030496
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de XamarinLuis Beltran
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualAnder Martinez
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Androidmcanalesc94
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasAnder Martinez
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
visual basic
visual basicvisual basic
visual basicJesus104
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 

Semelhante a MejorandoUsabilidadAplicaciones (20)

introducción a flutter
introducción a flutterintroducción a flutter
introducción a flutter
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0
 
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
 
Seminario Jade 2014
Seminario Jade 2014Seminario Jade 2014
Seminario Jade 2014
 
GDG DevFest Lighting Talks México
GDG DevFest Lighting Talks MéxicoGDG DevFest Lighting Talks México
GDG DevFest Lighting Talks México
 
Exclusivo .net
Exclusivo .netExclusivo .net
Exclusivo .net
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de Xamarin
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextual
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. Migas
 
Flex Mobile
Flex MobileFlex Mobile
Flex Mobile
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
visual basic
visual basicvisual basic
visual basic
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 

Mais de Danae Aguilar Guzmán

WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaDanae Aguilar Guzmán
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuarioDanae Aguilar Guzmán
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF Danae Aguilar Guzmán
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuarioDanae Aguilar Guzmán
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationDanae Aguilar Guzmán
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionDanae Aguilar Guzmán
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareDanae Aguilar Guzmán
 
09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptablesDanae Aguilar Guzmán
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodosDanae Aguilar Guzmán
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQueryDanae Aguilar Guzmán
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UIDanae Aguilar Guzmán
 

Mais de Danae Aguilar Guzmán (20)

Microsoft HoloLens
Microsoft HoloLensMicrosoft HoloLens
Microsoft HoloLens
 
WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimedia
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuario
 
WPF 05 - triggers y eventos
WPF 05 - triggers y eventosWPF 05 - triggers y eventos
WPF 05 - triggers y eventos
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
 
WPF 03 - controles WPF
WPF 03 - controles WPF WPF 03 - controles WPF
WPF 03 - controles WPF
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuario
 
WPF 01 - introducción
WPF 01 -  introducciónWPF 01 -  introducción
WPF 01 - introducción
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minification
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacion
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de software
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
 
09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables
 
08. Propiedades de estilo HTML box
08. Propiedades de estilo HTML box08. Propiedades de estilo HTML box
08. Propiedades de estilo HTML box
 
07. Usando CSS3
07. Usando CSS307. Usando CSS3
07. Usando CSS3
 
06. Creando un proceso web worker
06. Creando un proceso web worker 06. Creando un proceso web worker
06. Creando un proceso web worker
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
02. Interactuando con controles de UI
02. Interactuando con controles de UI02. Interactuando con controles de UI
02. Interactuando con controles de UI
 

MejorandoUsabilidadAplicaciones

  • 1. Mejorando la funcionalidad y usabilidad de las aplicaciones D A N A E A G U I L A R G U Z M Á N . M C T , 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. Integrando controles WinForms y WPF. Lección 2. Implementando Drag and Drop. Lección 3. Globalización, localización y accesibilidad.
  • 3. Lección 1. Integrando controles WinForms y WPF 1. Usando ElementHosts en Windows Forms 2. Usando ControlHosts en WPF
  • 4. 1.Usando ElementHosts en Windows Forms 1. Agregando ElementHost 2. Controles WPF en WinForms: System.Windows.Controls.Expander expander = new System.Windows.Controls.Expander(); expander.Header = "WPF Expander"; expander.Content = "Contenido"; elementHost1.Child = expander;
  • 5. 2. Usando ControlHosts en WPF Agregando controles Winforms en WPF desde C#: 1. Agregar referencia a System.Windows.Forms 2. Declarar e inicializar los controles: 3. Usarlos normalmente: System.Windows.Forms.OpenFileDialog dialogo = new System.Windows.Forms.OpenFileDialog(); System.Windows.Forms.DialogResult resultado; resultado = dialogo.ShowDialog(); if (resultado == System.Windows.Forms.DialogResult.OK) { MessageBox.Show(dialogo.FileName); }
  • 6. 2. Usando ControlHosts en WPF Agregando controles Winforms en WPF en XAML: 1. Referenciar System.Windows.Forms.Integration 2. Referenciar el namespace System.Windows.Forms xmlns:my="clr- namespace:System.Windows.Forms.Integration; assembly=WindowsFormsIntegration" xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
  • 7. 2. Usando ControlHosts en WPF Agregando controles Winforms en WPF en XAML: 3. Agregar WindowsFormsHost y los controles WinForms dentro. * Los controles WinForms tomarán el tamaño del WindowsFormsHost <my:WindowsFormsHost Margin="48,106,30,56" Name="winFormsHost1"> <wf:Button Text="Un Botón Windows Forms" /> </my:WindowsFormsHost>
  • 8. Lección 2. Implementando Drag and Drop 1. Drag and Drop en aplicaciones 2. Drag and Drop entre aplicaciones
  • 9. 1.Drag and Drop en aplicaciones
  • 10. 1.Drag and Drop en aplicaciones
  • 11. 2. Drag and Drop entre aplicaciones El sistema soporta por defecto Drag & Drop entre aplicaciones .NET Condiciones:  El control destino debe permitir uno de los drag Effects especificados en la llamada a DoDragDrop  El control destino debe aceptar los datos en el formato especificado en la llamada a DoDragDrop
  • 12. Lección 3. Globalización, localización y accesibilidad 1. Manejo de recursos locales 2. Usando configuraciones de culturas en validadores y conversores. 3. Usando archivos de recursos para localización. 4. Configuraciones regionales. 5. Implementando características de accesibilidad.
  • 13. 1. Manejo de recursos locales Cultura de la aplicacion:  en indica el idioma inglés  es indica el idioma español  de indica el idioma alemán Cultura específica:  en-CA indica el idioma inglés y la region de Canada  af-ZA indica el idioma africano y la region de Sud Africa  es-ES indica el idioma español y la region de España
  • 14. 1. Manejo de recursos locales • Modificando la cultura de la aplicación en Application.Startup: (CurrentCulture y CurrentUICulture) • Especificando la cultura neutra en WPF: System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-ES"); [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
  • 15. 1. Manejo de recursos locales Localizando la aplicación: 1. Agregar el atributo UICulture al proyecto  Al compilar se generan los subdirectorios para las culturas 2. Marcar las propiedades localizables con el atributo Uid (para cada archivo XAML) <UICulture>es-ES</UICulture> <Button x:Uid="Button_1" Name="Button1">Un botón</Button>
  • 16. 1. Manejo de recursos locales 2. Marcar las propiedades localizables con el atributo Uid (para cada archivo XAML) 3. Extraer el contenio localizable 4. Traducir 5. Crear los assemblies Satelite msbuild /t:updateuid miAplicacion.csproj locbaml /generate es-ESmiAplicacion.resources.dll /trans:miAplicacion.resources.FrenchCan.csv /cul:fr-CA /out:fr-CA
  • 17. 3. Usando configuraciones de culturas en validadores y conversores. 1. Agregar un traductor a nuestros conversores: [ValueConversion(typeof(string), typeof(string))] public class LanguageConverter : IValueConverter { Traductor _traductor = new Traductor(); public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string cadena = (string)value; switch (culture.ToString()) { case "fr-FR": return _traductor.EspaniolAFrances(cadena); case "de-DE": return _traductor.EspaniolAAleman(cadena); default: return cadena; } }
  • 18. 3. Usando configuraciones de culturas en validadores y conversores. 1. Agregar un traductor a nuestros conversores (ConvertBack): public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string cadena = (string)value; switch (culture.ToString()) { case "fr-FR": return _traductor.FrancesAEspaniol(cadena); case "de-DE": return _traductor.AlemanAEspaniol(cadena); default: return cadena; } }
  • 19. 4. Usando archivos de recursos para localización. 1. Agregar un folder de Recursos 2. Agregar archivos resx (Resource.de-DE.resx, Resource.en-US.resx, Resources.resx)
  • 20. 4. Usando archivos de recursos para localización. 3. Cambiar el modificador de acceso del archivo resx a public 4. Agregar el namespace del recurso en nuestra ventana: 5. Agregar un Binding a la propiedad deseada: xmlns:resx="clr-namespace:WpfApplication1.Resources" <TextBlock Text="{x:Static resx:Resource.CadenaSaludo}" />
  • 21. 5. Configuraciones regionales. 1. Se aplican al cambiar la cultura de la aplicación 2. Los datos que sin formato no serán afectados por un cambio de cultura. 3. Aplicar formatos a los datos como fechas, cantidades monetarias 4. Usar IFormatProvider en los metodos Convert DateTime.Now.ToString(CultureInfo.CurrentCulture);
  • 22. 5. Configuraciones regionales. 5. Validar con CODE_ANALYSIS en VS o con FxCop 6. Para datos que no se muestran al usuario usar InvariantCulture DateTime.Now.ToString(CultureInfo.InvariantCulture);
  • 23. 6. Implementando características de accesibilidad. • WPF usa el nuevo API de accesibilidad UIA (UI Automation) • UIA expone programáticamente información a usuarios de tecnologías asistidas (AT).
  • 24. 6. Implementando características de accesibilidad. Propiedades requeridas para la accesibilidad: •Name • Debe ser claro. No usar notación húngara. •Alt Text • Cuando el texto no es visible o se usan imágenes •Automation ID • Identifica al elemento UIA como único <ListBox AutomationProperties.Name = "Estados"/>
  • 25. 6. Implementando características de accesibilidad. Navegación por teclado: • Toda la aplicación debe ser navegable usando solo el teclado •Especificar el orden de tabulación •Especificar teclas de acceso directo.
  • 26. 6. Implementando características de accesibilidad. Navegación por teclado: •Las teclas de navegación deben ser funcionales: • TAB, SHIFT+TAB, CTRL+TAB, CTRL+SHIFT+TAB, UPARROW, DOWNARROW, LEFTARROW, y RIGHTARROW. •Se puede cambiar la navegación: Menu menuNavegable = new Menu(); /*...*/ KeyboardNavigation.SetTabNavigation(menuNavegable, KeyboardNavigationMode.Cycle);
  • 27. 6. Implementando características de accesibilidad. DPI alto: • WPF es dpi-aware pero: • Evitar hardcodear layouts, tamaños o fuentes, • Usar porcentajes donde sea posible.
  • 28. 6. Implementando características de accesibilidad. Contraste Alto: •El modo de contraste alto debe: • Remover animaciones flasheantes • Remover o reducir animaciones de transición • Omitir imágenes no funcionales, gradientes o patrones detrás del texto. •No se debe hardcodear colores. •Se debe tener iconos de color alternativo para alto contraste.
  • 29. 6. Implementando características de accesibilidad. Validar la accesibilidad de nuestra aplicación: • UI Accessibility Checker: • http://acccheck.codeplex.com/