【发布时间】:2017-01-24 22:01:55
【问题描述】:
我创建了一个视图 (MyView),其中包含这样的 UserControl:
<StackPanel>
<ctrl:ViewDialog DataContext="{Binding CtrlViewDialog}" Message="Hello" Name="ctrlViewDialog" >
</ctrl:ViewDialog>
视图背后的代码:
public MyView()
{
InitializeComponent();
var _message = ctrlViewDialog.Message;
}
[Dependency]
public MyViewViewModel ViewModel
{
get
{
return (MyViewViewModel)this.DataContext;
}
set
{
this.DataContext = value;
}
}
而视图模型 MyViewViewModel 是:
public MyViewViewModel()
{
ViewDialogViewModel CtrlViewDialog = new ViewDialogViewModel(Message);
}
包含的UserControl(ViewDialog)背后的代码是:
private string message;
public string Message
{
get { return message; }
set { message = value; }
}
public ViewDialog()
{
InitializeComponent();
}
如何将 MyView 的 "_message" 参数传递给 MyViewViewModel 以便将其传递给实例 ViewDialogViewModel CtrlViewDialog = new ViewDialogViewModel(Message);
【问题讨论】:
-
您确定这是您想要做的吗?使用(MyViewViewModel)this.DataContext;在视图中通常是你没有做正确的事情的标志。您在 prism 中使用 DI 做什么?
-
好的 Filip,我可以删除 (MyViewViewModel)this.DataContext;但我想将 Message="Hello" (xaml) 从视图传递到视图模型。有没有其他办法?
标签: c# wpf mvvm prism code-behind