Wpf 如何使用MVVM灯光在ViewModel之间传递变量?
我有两个视图,第一个视图包含用户列表,第二个视图可以编辑用户,我只想在每个屏幕的两个视图模型之间传递Id,因为我可以知道要修改的用户。我是一个使用MVVM Light框架的初学者,有谁能给我最好的解决方案吗 首先将变量包装在类中Wpf 如何使用MVVM灯光在ViewModel之间传递变量?,wpf,mvvm,mvvm-light,Wpf,Mvvm,Mvvm Light,我有两个视图,第一个视图包含用户列表,第二个视图可以编辑用户,我只想在每个屏幕的两个视图模型之间传递Id,因为我可以知道要修改的用户。我是一个使用MVVM Light框架的初学者,有谁能给我最好的解决方案吗 首先将变量包装在类中 public class VariableMessage { public string YourVariable { get; set; } } 然后在接收视图模型初始值设定项中接收消息寄存器 Messenger.Default.Registe
public class VariableMessage
{
public string YourVariable { get; set; }
}
然后在接收视图模型初始值设定项中接收消息寄存器
Messenger.Default.Register<VariableMessage>
(
this,
(action) => ReceiveVariableMessage(action)
);
private object ReceiveVariableMessage(VariableMessage variableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
return null;
}
Messenger.Default.Register
(
这
(操作)=>ReceiveVariableMessage(操作)
);
私有对象接收VariableMessage(VariableMessage VariableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
返回null;
}
发信
Messenger.Default.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"});
Messenger.Default.Send(newvariablemessage(){YourVariable=“Hello”});
首先将变量包装在类中
public class VariableMessage
{
public string YourVariable { get; set; }
}
然后在接收视图模型初始值设定项中接收消息寄存器
Messenger.Default.Register<VariableMessage>
(
this,
(action) => ReceiveVariableMessage(action)
);
private object ReceiveVariableMessage(VariableMessage variableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
return null;
}
Messenger.Default.Register
(
这
(操作)=>ReceiveVariableMessage(操作)
);
私有对象接收VariableMessage(VariableMessage VariableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
返回null;
}
发信
Messenger.Default.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"});
Messenger.Default.Send(newvariablemessage(){YourVariable=“Hello”});
首先将变量包装在类中
public class VariableMessage
{
public string YourVariable { get; set; }
}
然后在接收视图模型初始值设定项中接收消息寄存器
Messenger.Default.Register<VariableMessage>
(
this,
(action) => ReceiveVariableMessage(action)
);
private object ReceiveVariableMessage(VariableMessage variableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
return null;
}
Messenger.Default.Register
(
这
(操作)=>ReceiveVariableMessage(操作)
);
私有对象接收VariableMessage(VariableMessage VariableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
返回null;
}
发信
Messenger.Default.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"});
Messenger.Default.Send(newvariablemessage(){YourVariable=“Hello”});
首先将变量包装在类中
public class VariableMessage
{
public string YourVariable { get; set; }
}
然后在接收视图模型初始值设定项中接收消息寄存器
Messenger.Default.Register<VariableMessage>
(
this,
(action) => ReceiveVariableMessage(action)
);
private object ReceiveVariableMessage(VariableMessage variableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
return null;
}
Messenger.Default.Register
(
这
(操作)=>ReceiveVariableMessage(操作)
);
私有对象接收VariableMessage(VariableMessage VariableMessage)
{
Console.WriteLine(variableMessage.YourVariable);
返回null;
}
发信
Messenger.Default.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"});
Messenger.Default.Send(newvariablemessage(){YourVariable=“Hello”});
我建议使用“编辑用户”按钮/操作传递id,然后在目标viewmodel的构造函数中使用id,而不是使用messenger(使用messenger通常会弄乱代码)
视图中的按钮:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在viewmodel中:
public ICommand EditButtonCommand= new RelayCommand<object>(UseEditButton)
private async void UseEditButton(object obj)
{
YourModel id = obj as YourModel;
YourEditViewModel viewModel = new YourEditViewModel(id)
//navigate to vm
}
public ICommand editButton命令=new RelayCommand(使用editButton)
专用异步void UseEditButton(对象obj)
{
YourModel id=obj作为YourModel;
YourEditViewModel viewModel=新建YourEditViewModel(id)
//导航到虚拟机
}
我建议使用“编辑用户”按钮/操作传递id,然后在目标viewmodel的构造函数中使用id,而不是使用messenger(使用messenger通常会弄乱代码)
视图中的按钮:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在viewmodel中:
public ICommand EditButtonCommand= new RelayCommand<object>(UseEditButton)
private async void UseEditButton(object obj)
{
YourModel id = obj as YourModel;
YourEditViewModel viewModel = new YourEditViewModel(id)
//navigate to vm
}
public ICommand editButton命令=new RelayCommand(使用editButton)
专用异步void UseEditButton(对象obj)
{
YourModel id=obj作为YourModel;
YourEditViewModel viewModel=新建YourEditViewModel(id)
//导航到虚拟机
}
我建议使用“编辑用户”按钮/操作传递id,然后在目标viewmodel的构造函数中使用id,而不是使用messenger(使用messenger通常会弄乱代码)
视图中的按钮:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在viewmodel中:
public ICommand EditButtonCommand= new RelayCommand<object>(UseEditButton)
private async void UseEditButton(object obj)
{
YourModel id = obj as YourModel;
YourEditViewModel viewModel = new YourEditViewModel(id)
//navigate to vm
}
public ICommand editButton命令=new RelayCommand(使用editButton)
专用异步void UseEditButton(对象obj)
{
YourModel id=obj作为YourModel;
YourEditViewModel viewModel=新建YourEditViewModel(id)
//导航到虚拟机
}
我建议使用“编辑用户”按钮/操作传递id,然后在目标viewmodel的构造函数中使用id,而不是使用messenger(使用messenger通常会弄乱代码)
视图中的按钮:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在viewmodel中:
public ICommand EditButtonCommand= new RelayCommand<object>(UseEditButton)
private async void UseEditButton(object obj)
{
YourModel id = obj as YourModel;
YourEditViewModel viewModel = new YourEditViewModel(id)
//navigate to vm
}
public ICommand editButton命令=new RelayCommand(使用editButton)
专用异步void UseEditButton(对象obj)
{
YourModel id=obj作为YourModel;
YourEditViewModel viewModel=新建YourEditViewModel(id)
//导航到虚拟机
}
您能进一步解释一下如何进行导航吗?谢谢你能进一步解释你将如何进行导航吗?谢谢你能进一步解释你将如何进行导航吗?谢谢你能进一步解释你将如何进行导航吗?谢谢,谢谢!又短又甜!谢谢又短又甜!谢谢又短又甜!谢谢又短又甜!