Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

INotifyPropertyChanged - Από Parent σε child component

Îåêßíçóå áðü ôï ìÝëïò M1ke. Τελευταία δημοσίευση από το μέλος KelMan στις 31-07-2008, 22:38. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-07-2008, 15:50 43815

    INotifyPropertyChanged - Από Parent σε child component

    Γειά σας! Θέλω να έχω 6 ίδιες pages ως children ενός window, κάθε ένα σε ξεχωριστό Frame. Θέλω όλο το window να έχει ένα global string και οι αλλαγές να φαίνονται κατ'ευθείαν σε κάθε page.

    Πιο συγκεκριμένα:

    public class ExplorerPath : INotifyPropertyChanged
    {
       private string _s;
       public string s
       {
         get {return _s;}
         set
         {
          _s = value;
          RaisePropertyChanged("s");
         }
       }

       #region INotifyPropertyChanged Members

       public event PropertyChangedEventHandler PropertyChanged;
       protected void RaisePropertyChanged(string name)
       {
         if (PropertyChanged != null)
           PropertyChanged(this, new PropertyChangedEventArgs(name));
       }

       #endregion
    }


    Στο window1.xaml έχω δηλωμένο ένα ExplorerPath:

    <Window ... x:Name="MainWindow">
       <Window.Resources>
          <src:ExplorerPath x:Key="CurrentPathKey" x:Name="CurrentPath" PathValue="lala"/>
      <Window.Resources>

    και στο page1.xaml θέλω να έχω ένα textblock που παίρνει την τιμή του "CurrentPath":

    <TextBlock x:Name="txt" x:Key="txt" DataContext="{Binding Source={StaticResource MainWindow.CurrentPath}}" Text="{Binding PathValue}"/>

    Αλλά δεν μου κάνει την χάρη! Σε runtime το txt.Text με λέει: Cannot find resource named '{MainWindow.CurrentPath}'.

    Οκ, προφανώς κάπου κάνω λάθος! Που όμως?

    I think there's to much blood in my caffeine system..
  •  31-07-2008, 19:42 43838 σε απάντηση της 43815

    Απ: INotifyPropertyChanged - Από Parent σε child component

    Ίσως αν αντί για StaticResource έβαζα ElementName στο Binding source να έκανε λίγο περισσότερο νόημα...

    <TextBlock x:Name="txt" x:Key="txt" DataContext="{Binding Source={ElementName MainWindow.CurrentPath}}" Text="{Binding PathValue}"/>

    Δυστυχώς και πάλι ήταν χωρίς αποτέλεσμα...

    I think there's to much blood in my caffeine system..
  •  31-07-2008, 22:38 43845 σε απάντηση της 43815

    Απ: INotifyPropertyChanged - Από Parent σε child component

    To CurrentPath είναι resource του MainWindow, δεν είναι property για να κάνεις bind πάνω του.

    Ψάξε στο documentation το πώς μπορεί ένα element να πάρει το default binding context του parent του. Hint: Δοκίμασε στο TextBlock να βάλεις απλά

    <TextBlock x:Name="txt" x:Key="txt" Text="{Binding Path=PathValue}"/>

    Θα πρέπει να παίξει.


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems