2009-04-21 7 views
17

Come eseguire il bind a una proprietà di dipendenza WPF quando il datacontext della pagina viene utilizzato per altri binding? (Domanda semplice)Come eseguire il bind a una proprietà di dipendenza WPF quando il datacontext della pagina viene utilizzato per altri binding?

+1

stai chiedendo qualcosa di diverso da quello che si trova quando si esegue una ricerca di Google per "associazione dati WPF"? –

+3

Stavo cercando un esempio funzionante, in cui il datacontext della pagina è già utilizzato per gli altri binding. A quanto pare, il datacontext dell'elemento doveva essere impostato sulla pagina stessa. Pubblicherò il codice e modificherò la domanda, se necessario. –

risposta

31

Il datacontext dell'elemento doveva essere impostato.

XAML:

<Window x:Class="WpfDependencyPropertyTest.Window1" x:Name="mywindow"> 
    <StackPanel> 
     <Label Content="{Binding Path=Test, ElementName=mywindow}" /> 
    </StackPanel> 
</Window> 

C#:

public static readonly DependencyProperty TestProperty = 
     DependencyProperty.Register("Test", 
            typeof(string), 
            typeof(Window1), 
            new FrameworkPropertyMetadata("Test")); 
public string Test 
{ 
    get { return (string)this.GetValue(Window1.TestProperty); } 
    set { this.SetValue(Window1.TestProperty, value); } 
} 

vedere anche questa domanda correlata:

WPF DependencyProperties

+3

+1 Grazie. Finalmente un esempio chiaro e di facile comprensione! –

+0

Fornisce automaticamente una notifica di modifica ogni volta che 'Test' viene modificato tramite codice? – Kos

+0

Sei il mio salvatore, Thomas Bratt – user1836155

8

In XAML:

Something="{Binding SomethingElse, ElementName=SomeElement}" 

in codice:

BindingOperations.SetBinding(obj, SomeClass.SomethingProperty, new Binding { 
    Path = new PropertyPath(SomeElementType.SomethingElseProperty), /* the UI property */ 
    Source = SomeElement /* the UI object */ 
}); 

Anche se di solito si farà il contrario e associare la proprietà interfaccia utente per la proprietà di dipendenza personalizzata.

Problemi correlati