Это мой сценарий. У меня есть внутренний класс со стандартным свойством int.
public class Session : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
private ushort _Level;
public ushort Level
{
get { return _Level; }
}
private void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
// a timer code here updates the _Level property every 60 seconds
// and calls OnPropertyChange("Level");
}
В моем окне пользовательского интерфейса есть метка, которая привязывается к экземпляру Session и отображает значение уровня.
<TextBlock Name="LevelTextBlock" Text="{Binding SessionInstance.Level, StringFormat='0%'}" />
И конструктор окна имеет такой код:
public MyWindow()
{
SessionInstance = new Session();
this.InitializeComponent();
}
public Session SessionInstance { get; set; }
Однако, как вы можете догадаться, когда я обновляю значение _Level, пользовательский интерфейс не обновляет текстовый блок. Добавление DependancyProperty внутри класса Session недопустимо. Я мог бы сделать это в окне, но тогда мне все еще нужен уведомитель, который бы проверял значение обратно в экземпляр Session.
Мне было интересно, если есть элегантный способ сделать это. Я не могу думать ни о чем, кроме запуска другого таймера в окне, которое проверяет и обновляет значение текстового блока.
Есть мысли?