0

ich weiß, vielleicht ist es eine einfache Frage, bu Ich weiß nicht, wie dies Realiza:Wie kann ich eine Immobilie an einen TextBox binden

ich meine XAML-Code haben:

<phone:PhoneApplicationPage.Background> 
     <ImageBrush ImageSource="/conTgo;component/resources/images/bg_settings.png" Stretch="None"/> 
    </phone:PhoneApplicationPage.Background> 
    <TextBlock TextWrapping="Wrap" Text="{Binding VersionNumber}" Foreground="{StaticResource PhoneAccentBrush}" FontFamily="Segoe WP Black" FontSize="26.667" TextAlignment="Center" LineHeight="16"/> 
</phone:PhoneApplicationPage> 

In meinem Code hinter habe ich:

public string VersionNumber { get; set; } 

Wie kann ich das realisieren?

+0

Obwohl die in der folgenden Antwort erläuterte Option funktioniert, kann es zu langfristigen Wartbarkeitsproblemen kommen. Ich empfehle Ihnen, ein wenig über das MVVM-Muster und wie man auf Windows Phone anwenden: http://www.bing.com/search?q=MVVM+Windows+Phone – Murven

Antwort

1

Das MVVM-Muster wird für die Silverlight-Entwicklung dringend empfohlen und eignet sich gut für Fälle wie diesen, sowie um den Code für Unit-Tests besser einzustellen.

Wenn Ihre Eigenschaft, für die die Bindung erforderlich ist, direkt in Ihrem Steuerelement liegt und Sie sie dort beibehalten möchten, muss Ihr Steuerelement INotifyPropertyChanged implementieren, damit die Eigenschaft in die Änderungsmitteilung von Silverlight (oder WPF) einfügt:

public class YourControl : Control, INotifyPropertyChanged 
{ 

    public string VersionNumber { 
     get { return versionNumber; } 
     set { 
      versionNumber = value; 
      NotifyPropertyChanged("VersionNumber"); 
     }   
    } 
    private string versionNumber; 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected void NotifyPropertyChanged(String info) { 
     if (PropertyChanged != null) { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 
} 

Wieder würde ich definitiv einen MVVM Ansatz jedoch empfehlen.

+0

Obwohl dies die Arbeit erledigt, denke ich nicht Es ist eine gute Idee, INotifyPropertyChanged in einem Steuerelement zu implementieren und sich selbst als Datenkontext festzulegen. Der Vorlagenbindungsmechanismus ist für die Steuerelementvorlagenstruktur vorgesehen, um Eigenschaften an seine eigenen Steuereigenschaftswerte zu binden. INotifyPropertyChanged und DataContext sollen externe Daten in die Ansicht exportieren. Dies empfiehlt die Verwendung des falschen Werkzeugs für den Job. – Murven

+0

Ich bekomme diesen Murven, und ich stecke MVVM wann immer möglich. Um die absoluten Grundlagen zu erfahren und zu sehen, wie der Änderungsbenachrichtigungsprozess für dieses spezielle Beispiel funktioniert, ist meine Antwort angemessen. – KodeKreachor

+0

OK, das ist cool. Ich denke nur, dass es wichtig ist, es explizit zu schreiben, so dass sowohl die Person, die die Frage stellt, als auch andere Leute, die die Website durchsuchen, nicht denken, dass dies die einzige Antwort für diese Art von Problem ist. – Murven

1

Die Bindung durchsucht die Eigenschaft auf Ihrem Datenkontext. Wenn Sie also die Eigenschaft zu Ihrer Seite hinzugefügt haben, müssen Sie Ihre Seite als eigenen Datenkontext festlegen.

In Ihrer Seite Konstruktor nach dem Aufruf von "InitializeComponent()", fügen:

this.DataContext = this; 

, die den Trick tun sollten.

Diese Methode eignet sich für kleine Anwendungen. Wenn Sie eine größere und strukturiertere App erstellen möchten, sollten Sie sich über das MVVM-Muster informieren.

Verwandte Themen