У меня есть приложение, которое группирует все глобальные переменные в одном классе. Они используются над многими классами в приложении. (300+ переменных, сокращено для демонстрации):
public class Vars
{
public static string DateStr = "";
}
Я хочу использовать x: Привязать к одностороннему связыванию данных с полями на странице:
<TextBlock x:Name="Local_Data" Text="{x:Bind local:Vars.DateStr, Mode=OneWay}" Style="{StaticResource TextBlockStyle1}"/>
Привязка OneTime кажется, работает нормально. Я могу обновить sh страницы, и DateStr отражает новое значение.
Я изменил определение класса Vars на:
public class Vars : INotifyPropertyChanged
{
private static string _DateStr = "hello";
public static string DateStr
{
get { return _DateStr; }
set
{
_DateStr = value;
OnPropertyChanged();
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raises this object's PropertyChanged event.
/// </summary>
/// <param name="propertyName">The property that has a new value.</param>
protected void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
#endregion
}
Когда я пытаюсь построить, я получаю сообщение:
Ссылка на объект требуется для нестатического c поля, метода или свойства 'Vars.OnPropertyChanged (string)'
Если изменить его на :
protected static void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
Я получаю сообщение:
Ключевое слово "this" недопустимо для свойства stati c, метода stati c или stati c инициализатор поля
Я предполагаю, что это что-то тривиальное, что я пропускаю. Как правильно пометить изменение данных?
Спасибо за вашу помощь. Dan