我在wpf form1和form2中有两个表单。
在form1中,我有两个单键控制按钮。 按钮点击事件发生以下操作:
private void button1_Click(object sender, RoutedEventArgs e)
{
form2 md = new form2();
md.Show();
this.Close();
}
和form2代码是这样的:
private MainWindowViewModel mainWindowViewModel;
public form2()
{
InitializeComponent();
this.mainWindowViewModel = new MainWindowViewModel(this);
base.DataContext = this.mainWindowViewModel;
}
MainviewModel,其中包含与数据显示相关的所有逻辑。
我的问题是:
用户可以从给定选项中选择任何单选按钮,然后按OK按钮。 如果用户将选择单选按钮1,所以我想获取radiobutton的内容,它将转到form2,然后转到mainviewModel类,它可以替换以下代码:
em = EmFact.CreateEm(Protocol.Pro1, 2);
所以取代Protocol.Pro1,它应该采用radiobutton内容。
答案 0 :(得分:1)
我已经很长时间没有处理WPF了,但据我所知,你有能力修改表单的构造函数?那么为什么不将这些信息作为参数传递。在事件中显示表单时,您正在创建表单的实例,因此您可以在构造函数中传递它。
对不起,如果没有帮助
答案 1 :(得分:0)
如果我正确地假设您有两个模型要在两者之间传递数据?
从Nuget安装MvvmLight。它包括一个Messaging命名空间,它为您提供了一种将对象作为消息发送的方法。您在视图模型构造函数中注册了一种处理此数据的方法,当然,这可以更新属性。
查看at JesseLiberty.com进行演练。
基本示例是登录方案:
我们的登录视图模型会发送一条消息:
MessageBroker.Messenger.Send<LoginSuccessMessage>(new LoginSuccessMessage() { UserName = "user" });
在这种情况下,我们传递一个LoginSuccessMessage对象,该对象只有一个用户名属性... 然后在另一个视图模型中,我们注册一个处理程序:
this.MessengerInstance.Register<LoginSuccessMessage>(this, this.OnLoginSuccessMessage);
private async void OnLoginSuccessMessage(LoginSuccessMessage message)
{
this.CurrentUserName = message.UserName;
}
希望这有帮助。