2012-03-26 13 views
7

Questo dovrebbe essere semplice, ma non riesco a farlo funzionare. Ho una finestra (la finestra app XAML principale)Associazione di un oggetto TextBlock a proprietà di una finestra

ho definito un propery di tipo "Test" (che ha e int ID e DateTime TestDate)

 public Test CurrentTest 
    { 
     get 
     { 
      return currentTest; 
     } 
     set 
     { 
      currentTest = value; 
      OnPropertyChanged("CurrentTest"); 
     } 
    } 

Ho aggiunto i OnPropertyChanged Impl :

public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged(String property) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
     } 
    } 

e ora provo a collegarlo a un blocco di testo sulla finestra. Ma non funziona:

<TextBlock Text="{Binding Source={StaticResource CurrentTest}, Path=TestDate, StringFormat=dd/MM/yyyy, TargetNullValue=Not Yet Set}"></TextBlock> 

e questo non funziona neanche:

<TextBlock> 
      <TextBlock.Text> 
       <Binding ElementName="CurrentTest" Path="TestDate" TargetNullValue="not yet set" Mode="OneWay"></Binding> 
      </TextBlock.Text> 
     </TextBlock> 

Cosa devo fare per avere la textBlock mostrare la data di questa proprietà?

+2

Penso che si sa come impostare la destra DataContext, tuttavia accanto l'attuazione del codice di PropertyChanged avete questo dietro la vostra classe? : InotifyPropertyChanged – Silvermind

+0

Hai anche controllato la finestra di output per errori di binding specifici? – Silvermind

+0

hai ragione su INotifyPropertyChanged – Dani

risposta

19

È possibile utilizzare la proprietà RelativeSource:

<TextBlock Text="{Binding Path=CurrentTest.TestDate, 
          RelativeSource={RelativeSource Mode=FindAncestor, 
                 AncestorType=Window}}" /> 
+0

Questo funziona, ma ha funzionato solo dopo aver aggiunto la proprietà INotifyPropertyChanged alla classe Window, quindi grazie anche a @SilverMind! – Dani

+0

Perché StaticResource non funziona? – Dani

+0

@Dani, perché pensi che dovrebbe? StaticResource viene utilizzato per accedere a una risorsa, non a una proprietà della vista ... –

Problemi correlati