private void InjectStopOnClick(object sender, RoutedEventArgs e) { IsReading = !IsReading; if (IsReading) Task.Factory.StartNew(Read); }将这段代码改写成当数据改变时发生
时间: 2024-01-24 11:05:34 浏览: 63
浅析C# 中object sender与EventArgs e
我不确定您的问题的具体含义,但我会尝试回答它。如果您希望在数据更改时触发某些操作,您可以使用数据绑定和属性更改通知。您可以将属性定义为具有get和set访问器,并在set访问器中触发PropertyChanged事件。然后,在XAML中将该属性绑定到UI元素的属性,例如按钮的IsEnabled属性。当属性更改时,将自动更新UI元素。以下是一个示例:
```
private bool _isReading;
public bool IsReading
{
get { return _isReading; }
set
{
if (_isReading != value)
{
_isReading = value;
OnPropertyChanged(nameof(IsReading));
if (IsReading) Task.Factory.StartNew(Read);
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
```
然后,在XAML中将按钮的IsEnabled属性绑定到该属性:
```
<Button Content="Stop" IsEnabled="{Binding IsReading}" Click="InjectStopOnClick"/>
```
阅读全文