我在xaml中有这样的东西:
<Button Content="{Binding MyStopwatch.IsRunning,
Converter={StaticResource BoolToStr}}"/>
当IsRunning
为假时,我需要显示开始,当IsRunning
为真时,我需要显示停止。
我对转换器或绑定本身没有任何问题。
我在刷新IsRunning
属性时遇到问题。
在程序运行时IsRunning
属性更改时,不会更改启动/停止文本。
我知道如何在我自己的属性上实现INotifyPropertyChange
。
但我不知道如何在IsRunning
答案 0 :(得分:0)
您无法StopWatch
实施INotifyPropertyChanged
。你可以做的是为它创建自己的包装器,然后使用它。例如:
public class StopwatchWrapper : INotifyPropertyChanged
{
Stopwatch _stopwatch;
private bool _isRunning;
public bool IsRunning
{
get { return _isRunning; }
set
{
if (_isRunning != value)
{
_isRunning = value;
OnPropertyChanged("IsRunning");
}
}
}
public StopwatchWrapper()
{
_stopwatch = new Stopwatch();
_isRunning = false;
}
public void Start()
{
_stopwatch.Start();
IsRunning = _stopwatch.IsRunning;
}
public void Stop()
{
_stopwatch.Stop();
IsRunning = _stopwatch.IsRunning;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
答案 1 :(得分:0)
如果您想更新绑定,只要您开始或停止秒表,就可以在属性PropertyChanged
上致电MyStopwatch
。
OnPropertyChanged("MyStopwatch");