WPF - 如何使用布尔值创建停止按钮



有没有办法绑定一个按钮,以便能够将布尔值从真更改为假。

我不想影响按钮的可见性或 IsSelected。最终,我正在制作一个停止按钮,它只取决于属性是真还是假。

private bool _isRunning;
public bool IsRunning
{
get
{
return _isRunning;
}
set
{
_isRunning = value;
OnPropertyChanged("IsRunning");
}
}
public RelayCommand Stest { get; set; }
public StartTest()
{
Stest = new RelayCommand(Test, Test11);
}
public async void Test(object host)
{
_isRunning = false;
int number = 1;
while( IsRunning == false)
{
OutPut = number.ToString();
number++;
await Task.Delay(1000);
}
}
public bool Test11(object host)
{
return true;
}

我希望能够将"IsRunning"的值更改为 True 以停止 while 循环。

只需将按钮的Command绑定到代码中的命令,该命令即可调用函数。所述函数将简单地切换IsRunning的值。

public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private bool _isRunning = false;
public bool IsRunning
{
get { return _isRunning; }
set { _isRunning = value; OnPropertyChanged("IsRunning"); }
}
public RelayCommand IsRunningCommand { get; private set; }
public MainWindow()
{
InitializeComponent();
IsRunningCommand = new RelayCommand(ToggleRunning);
DataContext = this;
}
public void ToggleRunning()
{
IsRunning = !IsRunning;
}
}

您的按钮XAML如下所示:

<Button Grid.Row="0" Name="BtnToggle" Width="100" Height="28"
Content="Toggle"
Command="{Binding IsRunningCommand}"/>

如果您不是在寻找切换功能,而只是在单击按钮时将IsRunning设置为false,只需将功能更改为以下内容:

public void ToggleRunning()
{
IsRunning = false;
}

最新更新