Я создал 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». Что случилось сейчас?
Спасибо за ваш совет! Но теперь появилась другая проблема. Посмотрите на «Edit1» –
Вы не привязываете ресурс, вы в основном устанавливаете ресурс. Вам нужно установить экземпляр вашего синглтона как ресурса, а затем сделать «Text =» {Binding DownloadMgrString, Source = {StaticResource MySingletonResourceKey} "' –