¿Alguna vez alguien ha creado una extensión de marcado personalizado en WPF o Silverlight? ¿Cuándo querrías o necesitarías hacer esto alguna vez? ¿Algún consejo o fuente sobre cómo hacerlo?Extensiones de marcado en WPF/Silverlight
Respuesta
Sí, es útil y yo mismo he creado uno. Creé una extensión de marcado llamada EvalBinding que toma un conjunto de enlaces como secundarios y una cadena de evaluación C#. Evalúa C# para procesar los valores de los enlaces secundarios para que no necesite crear muchas clases simples TypeConverter.
Por ejemplo, yo puedo hacer esto ...
<EvalBinding Eval="(this[0] > this[1] ? 'GT' : 'LTE')">
<Binding ElementName="element1" Path="Size"/>
<Binding ElementName="element2" Path="Size"/>
<EvalBinding>
Donde esta es una referencia a la matriz de resultados de unión niño.
por los recursos en la implementación de un MarkupExtension ...
Otro ejemplo sería que Localization
Nota: No se puede escribir de marcado personalizada extensiones en Silverlight.
Ah, otra de sus muchas limitaciones. No puedo esperar a Mix para poder averiguar si arreglaron esta mierda. –
Lágrimas amargas de frustración. – cplotts
¡Hurra!
Esto se implementa en Silverlight 5 !!
¡Y además, ahora es una interfaz genérica en lugar de una clase!
Lea this para ver un ejemplo.
Sé que esta es una publicación antigua, pero utilizo una extensión de marcado para estandarizar mis enlaces de validación. Así que el beneficio aquí es pequeño, 4 de los valores predeterminados que ya no tengo que establecer, y si deseo cambiarlos en el futuro, solo lo hago aquí.
using System;
using System.Windows.Data;
using System.Windows.Markup;
namespace ITIS
{
/// <summary>
/// Creates a normal Binding but defaults NotifyOnValidationError to True,
/// ValidatesOnExceptions to True, Mode to TwoWay and
/// UpdateSourceTrigger to LostFocus.
/// </summary>
public sealed class ValidatedBinding : MarkupExtension
{
public ValidatedBinding(string path)
{
Mode = BindingMode.TwoWay;
UpdateSourceTrigger = UpdateSourceTrigger.LostFocus;
Path = path;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return new Binding(Path) {
Converter = this.Converter,
ConverterParameter = this.ConverterParameter,
ElementName = this.ElementName,
FallbackValue = this.FallbackValue,
Mode = this.Mode,
NotifyOnValidationError = true,
StringFormat = this.StringFormat,
ValidatesOnExceptions = true,
UpdateSourceTrigger = this.UpdateSourceTrigger
};
}
public IValueConverter Converter { get; set; }
public object ConverterParameter { get; set; }
public string ElementName { get; set; }
public object FallbackValue { get; set; }
public BindingMode Mode { get; set; }
public string Path { get; set; }
public string StringFormat { get; set; }
public UpdateSourceTrigger UpdateSourceTrigger { get; set; }
}
}
- 1. ¿Cómo usar extensiones y métodos de utilidad en el marcado?
- 2. error al enlazar usando extensiones de marcado: Propiedad desconocida encontró al analizar una extensión de marcado
- 3. Marcado de Stackoverflow para javadoc
- 4. Marcado dinámico en Wicket
- 5. Citas de marcado en octopress
- 6. CALayers de marcado en iPhone
- 7. ¿Extensiones extendidas en C++?
- 8. Extensiones reactivas en mono?
- 9. Extensiones reactivas (Rx) + MVVM =?
- 10. Marcado líquido en Java/Scala
- 11. Lista de extensiones GHC
- 12. Extensiones de Chrome + Dart
- 13. Búsqueda de texto marcado (seleccionado) en Emacs
- 14. Denominación de WPF-Controls en Marcado
- 15. Marcado de una clase estática en VB.NET
- 16. Marcado de calles en Google Maps
- 17. ¿Extensiones de PSake?
- 18. Botón de radio marcado propiedad
- 19. jQuery reemplazar texto marcado
- 20. HTML Comentarios Marcado
- 21. ¿Cómo cargar extensiones en SQLite?
- 22. ¿Marcado con sintaxis personalizada?
- 23. Instalación de extensiones de PHP en Windows
- 24. Estrangulamiento/colas de eventos - ¿Extensiones reactivas?
- 25. Extensiones de navegador de Android
- 26. Instalación de extensiones PHP en alojamiento compartido
- 27. Uso de extensiones OpenGL En Windows
- 28. Extensiones de archivos múltiples en OpenFileDialog
- 29. origen cruzado XMLHttpRequest en extensiones de cromo
- 30. "using" namespace equivalent en el marcado ASP.NET
¿Estás hablando de WPF o Silverlight, que es muchísimo diferente, especialmente en este aspecto ... – Shimmy