2009-07-07 21 views
24

En WPF, me gustaría poder crear una plantilla de cómo se aplican mis enlaces de forma predeterminada.WPF: definir el valor predeterminado de enlace

Por ejemplo, yo quiero escribir:

Text="{Binding Path=PedigreeName}" 

pero sería como si hubiera tecleado:

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 

Alguna idea?

Gracias,

  • Patrick

Respuesta

16

Además de la buena respuesta de Joe White, también podría crear una clase que herede de Binding y establezca los valores de propiedad predeterminados que necesita. Por ejemplo:

public class TwoWayBinding : Binding 
{ 
    public TwoWayBinding() 
    { 
     Initialize(); 
    } 

    public TwoWayBinding(string path) 
     : base(path) 
    { 
     Initialize(); 
    } 

    private void Initialize() 
    { 
     this.Mode = BindingMode.TwoWay; 
    } 
} 
+0

Gracias, terminé implementándolo de esa manera. [code] public class ValidationBinding: Enlace { public ValidationBinding() { Initialize(); } public ValidationBinding (ruta de cadena) : base (ruta) { Initialize(); } vacío privado Inicializar() { Modo = BindingMode.TwoWay; UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; ValidatesOnDataErrors = true; ValidatesOnExceptions = true; } } [/ code] – PBelanger

+0

¿Esto también funciona en Silverlight 3+? –

+0

Un ejemplo de uso de XAML sería genial; no puede encontrar ningún ... – vines

25

Utilice una de las sobrecargas de DependencyProperty.Register que toman un PropertyMetadata. Pase una instancia de FrameworkPropertyMetadata y establezca sus propiedades.

public class Dog { 
    public static readonly DependencyProperty PedigreeNameProperty = 
     DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog), 
      new FrameworkPropertyMetadata() { 
       BindsTwoWayByDefault = true, 
       DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus 
      } 
     ); 

yo no improvisada ver una manera de establecer los valores predeterminados para NotifyOnValidationError, ValidatesOnDataErrors o ValidatesOnExceptions, pero no he utilizado esto suficiente para estar seguro de lo que debe buscar; ellos pueden estar allí.

+0

Gracias, buena idea, pero en mi caso, la clase Dog está en un proyecto de modelo de negocio. No deseo agregar una dependencia en System.Windows para este proyecto. La solución que buscaba era en esa dirección, algo así como poner En el App.xaml, pero no han encontrado nada que coincida ... Gracias de nuevo! – PBelanger

Cuestiones relacionadas