1

我在 xaml 中有这样的东西:

<Button Content="{Binding MyStopwatch.IsRunning,
        Converter={StaticResource BoolToStr}}"/>

我需要显示开始,何时IsRunning为假,停止,何时IsRunning为真。我对转换器或绑定本身没有问题。

我有刷新IsRunning属性的问题。当程序运行时IsRunning 属性更改- 它不会更改开始/停止文本。

我知道如何INotifyPropertyChange在我自己的属性上实现。但我不知道如何实现(类似的)属性更改IsRunning

4

2 回答 2

0

你不能做StopWatchimplement 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));
    }
}
于 2013-08-11T09:11:12.027 回答
0

如果要更新绑定,可以在启动或停止秒表时调用PropertyChangedon 属性。MyStopwatch

OnPropertyChanged("MyStopwatch");
于 2013-08-11T09:11:22.993 回答