wpf 10. mejorando la funcionalidad y usabilidad de las aplicaciones

Post on 08-Apr-2017

98 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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-ES\miAplicacion.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/

top related