¿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. CALayers de marcado en iPhone
- 6. Citas de marcado en octopress
- 7. ¿Extensiones extendidas en C++?
- 8. Extensiones reactivas en mono?
- 9. Extensiones reactivas (Rx) + MVVM =?
- 10. Marcado líquido en Java/Scala
- 11. Marcado de una clase estática en VB.NET
- 12. Denominación de WPF-Controls en Marcado
- 13. Búsqueda de texto marcado (seleccionado) en Emacs
- 14. Marcado de calles en Google Maps
- 15. Lista de extensiones GHC
- 16. Extensiones de Chrome + Dart
- 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. Extensiones de archivos múltiples en OpenFileDialog
- 27. origen cruzado XMLHttpRequest en extensiones de cromo
- 28. Uso de extensiones OpenGL En Windows
- 29. Instalación de extensiones PHP en alojamiento compartido
- 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