2013-02-15 1 views
1

Я создал Singleton, который содержит строку. Теперь я хочу привязать эту строку к TextBlock Xaml.Как связать строку из singleton в xaml (WinRT/C#)

<TextBlock Visibility="Visible" Text="{Binding singleton.Instance.newsString, Mode=TwoWay}"/> 

Когда я запускаю приложение WinRT, TextBlock-Text-String пуст.

EDIT 1:

Теперь она работает. Но когда я изменяю строку в singleton, TextBlock не обновляется.

Здесь C# код из моего одноточечного

namespace MyApp 
{ 
    public sealed class singleton : INotifyPropertyChanged 
    { 
     private static readonly singleton instance = new singleton(); 
     public static singleton Instance 
     { 
      get 
      { 
       return instance; 
      } 
     } 

     private singleton() { } 

     private string _newsString; 
     public string newsString 
     { 
      get 
      { 
       if (_newsString == null) 
        _newsString = ""; 
       return _newsString; 
      } 
      set 
      { 
       if (_newsString != value) 
       { 
        _newsString = value; 
        this.RaiseNotifyPropertyChanged("newsString"); 
       } 
      } 
     } 

     private void RaiseNotifyPropertyChanged(string property) 
     { 
      var handler = PropertyChanged; 
      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(property)); 
      } 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 
    } 
} 

В моем коде позади XAML я сделать это

 singleton.Instance.newsString = "Breaking news before init"; 
     this.Resources.Add("newsStringResource", singleton.Instance.newsString); 
     this.InitializeComponent(); 
     singleton.Instance.newsString = "Breaking news AFTER init"; 

и в XAML я связать ресурс с

 <TextBlock Visibility="Visible" Text="{StaticResource newsStringResource}" /> 

С помощью этого кода TextBlock показывает «Ломать новости перед init». Что случилось сейчас?

ответ

2

Добавьте свой синглтон в ресурсы приложения, используя код, стоящий перед созданием TextBlock, и ссылайтесь на одноэлементный ключ.

+0

Спасибо за ваш совет! Но теперь появилась другая проблема. Посмотрите на «Edit1» –

+0

Вы не привязываете ресурс, вы в основном устанавливаете ресурс. Вам нужно установить экземпляр вашего синглтона как ресурса, а затем сделать «Text =» {Binding DownloadMgrString, Source = {StaticResource MySingletonResourceKey} "' –

Смежные вопросы