C#WPFMVVM当一个变量为true时如何使MessageBox.Show的消息弹窗自己关闭
时间: 2024-10-28 09:15:25 浏览: 22
在C# WPF MVVM架构中,当你想在一个ViewModel里控制消息框(MessageBox)的显示并自动关闭,通常你会通过Command或事件来实现这一功能。你可以创建一个ICommand(例如使用`System.Windows.Input.ICommand`),并在其中添加逻辑判断,比如当某个布尔变量变为`true`时,执行`ShowMessage`方法,并设置适当的关闭条件。
下面是一个简单的示例:
```csharp
public class ViewModel : INotifyPropertyChanged
{
private bool _shouldCloseMessageBox;
public bool ShouldCloseMessageBox
{
get { return _shouldCloseMessageBox; }
set
{
_shouldCloseMessageBox = value;
OnPropertyChanged("ShouldCloseMessageBox");
if (value && MessageBox.Show("这是一个消息", "提示", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
// 如果用户点击了"是",则关闭消息框
CloseMessageBox();
}
}
}
public ICommand ShowMessageBoxCommand => new RelayCommand(() => ShowMessageBox());
private void ShowMessageBox()
{
// 显示消息框,这里省略了具体的代码
// MessageBox.Show("你的消息内容", "窗口标题");
// 当ShouldCloseMessageBox变为true且用户选择"是"时,执行CloseMessageBox
ShouldCloseMessageBox = true;
}
private void CloseMessageBox()
{
// 关闭消息框的代码
MessageBox.Close();
}
// INotifyPropertyChanged实现部分...
}
```
在这个例子中,`ShowMessageBoxCommand`会在用户触发时展示消息框。当`ShouldCloseMessageBox`变更为`true`且用户确认关闭时,会调用`CloseMessageBox`方法来关闭消息框。
阅读全文