从另一个 ViewModel 访问 ViewModel 中的 属性
Access property in ViewModel from another ViewModel
我有带 属性 的 ViewModel 用于显示通知:
public class NotificationViewModel : BaseViewModel
{
private string errorText;
public string ErrorText
{
get => this.errorText;
set
{
this.errorText = value;
this.OnPropertyChanged();
}
}
}
然后在 MainViewModel.cs 中,我有以下命令,在出现错误时应显示通知:
public NotificationViewModel NotificationViewModel { get; private set; }
public MainViewModel()
{
}
private async Task AddProjectToDatabase()
{
if (!string.IsNullOrEmpty(this.ProjectNumber))
{
// some other code here
}
else
{
NotificationDialog view = new NotificationDialog
{
DataContext = new NotificationViewModel()
};
this.NotificationViewModel.ErrorText = "Select project number first!";
object result = await DialogHost.Show(view, "MainDialogHost", this.ExtendedOpenedEventHandler, this.ExtendedNotificationClosingEventHandler);
}
}
我尝试过:
public MainViewModel()
{
this.NotificationViewModel = new NotificationViewModel();
}
但是在这种情况下,我没有显示任何文本,因为现在初始化了 NotificationViewModel 的新实例。我可能不得不以某种方式将现有实例注入 MainViewModel.cs ?我该怎么做?如果有什么遗漏的答案,请评论。
您可以将 NotificationViewModel
属性 设置为 NotificationDialog
的 DataContext
。
private async Task AddProjectToDatabase()
{
if (!string.IsNullOrEmpty(this.ProjectNumber))
{
// some other code here
}
else
{
NotificationDialog view = new NotificationDialog
{
DataContext = this.NotificationViewModel
};
this.NotificationViewModel.ErrorText = "Select project number first!";
object result = await DialogHost.Show(view, "MainDialogHost", this.ExtendedOpenedEventHandler, this.ExtendedNotificationClosingEventHandler);
}
}
我有带 属性 的 ViewModel 用于显示通知:
public class NotificationViewModel : BaseViewModel
{
private string errorText;
public string ErrorText
{
get => this.errorText;
set
{
this.errorText = value;
this.OnPropertyChanged();
}
}
}
然后在 MainViewModel.cs 中,我有以下命令,在出现错误时应显示通知:
public NotificationViewModel NotificationViewModel { get; private set; }
public MainViewModel()
{
}
private async Task AddProjectToDatabase()
{
if (!string.IsNullOrEmpty(this.ProjectNumber))
{
// some other code here
}
else
{
NotificationDialog view = new NotificationDialog
{
DataContext = new NotificationViewModel()
};
this.NotificationViewModel.ErrorText = "Select project number first!";
object result = await DialogHost.Show(view, "MainDialogHost", this.ExtendedOpenedEventHandler, this.ExtendedNotificationClosingEventHandler);
}
}
我尝试过:
public MainViewModel()
{
this.NotificationViewModel = new NotificationViewModel();
}
但是在这种情况下,我没有显示任何文本,因为现在初始化了 NotificationViewModel 的新实例。我可能不得不以某种方式将现有实例注入 MainViewModel.cs ?我该怎么做?如果有什么遗漏的答案,请评论。
您可以将 NotificationViewModel
属性 设置为 NotificationDialog
的 DataContext
。
private async Task AddProjectToDatabase()
{
if (!string.IsNullOrEmpty(this.ProjectNumber))
{
// some other code here
}
else
{
NotificationDialog view = new NotificationDialog
{
DataContext = this.NotificationViewModel
};
this.NotificationViewModel.ErrorText = "Select project number first!";
object result = await DialogHost.Show(view, "MainDialogHost", this.ExtendedOpenedEventHandler, this.ExtendedNotificationClosingEventHandler);
}
}