2010-04-18 1 views
51

Me gustaría que, de forma predeterminada, cuando me vincule a una de mis propiedades de dependencia, el modo de enlace sea bidireccional y se cambie la propiedad de la activación de la actualización. ¿Hay alguna forma de hacer esto?¿Hay alguna forma de especificar el modo de enlace predeterminado de una propiedad de dependencia personalizada y el activador de actualización?

Aquí es un ejemplo de una de mis propiedades de dependencia:

public static readonly DependencyProperty BindableSelectionLengthProperty = 
     DependencyProperty.Register(
     "BindableSelectionLength", 
     typeof(int), 
     typeof(ModdedTextBox), 
     new PropertyMetadata(OnBindableSelectionLengthChanged)); 

Respuesta

84

Al registrar la propiedad, inicializar los metadatos con:

new FrameworkPropertyMetadata 
{ 
    BindsTwoWayByDefault = true, 
    DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
} 
+3

Pude configurar BindsTwoWayByDefault añadiendo esto a mi ejemplo dp: new FrameworkPropertyMetadata (0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnBindableSelectionStartChanged). Sin embargo, todavía tengo problemas para configurar UpdateSourceTrigger en PropertyChanged. – Justin

+1

Modifiqué mi respuesta para mostrar cómo hacerlo con un inicializador de objetos. Úselo en lugar de un constructor. –

+0

Gracias por su ayuda Diego! – Justin

14

En la declaración de propiedades de dependencia que se vería así:

public static readonly DependencyProperty IsExpandedProperty = 
     DependencyProperty.Register("IsExpanded", typeof(bool), typeof(Dock), 
     new FrameworkPropertyMetadata(true, 
      FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
      OnIsExpandedChanged)); 

public bool IsExpanded 
{ 
    get { return (bool)GetValue(IsExpandedProperty); } 
    set { SetValue(IsExpandedProperty, value); } 
} 
Cuestiones relacionadas