2010-04-18 2 views
51

Vorrei fare in modo che, come impostazione predefinita, quando eseguo il binding a una delle mie proprietà di dipendenza, la modalità di associazione è bidirezionale e il trigger di aggiornamento è proprietà modificata. C'è un modo per fare questo?Esiste un modo per specificare la modalità di associazione predefinita della proprietà di dipendenza personalizzata e il trigger di aggiornamento?

Ecco un esempio di uno dei miei proprietà di dipendenza:

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

risposta

84

Al momento della registrazione della proprietà, inizializzare i metadati con:

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

Sono stato in grado di impostare BindsTwoWayByDefault aggiungendo questo al mio esempio dp: new FrameworkPropertyMetadata (0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnBindableSelectionStartChanged). Tuttavia, sto ancora riscontrando problemi nell'impostare UpdateSourceTrigger su PropertyChanged. – Justin

+1

Ho modificato la mia risposta per mostrare come farlo con un inizializzatore di oggetti. Usa quello al posto di un costruttore. –

+0

Grazie per il tuo aiuto Diego! – Justin

14

Nella dichiarazione proprietà di dipendenza sarebbe simile a questa:

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); } 
}