我有2個視圖第一個包含用戶的列表,第二個我可以編輯的用戶,我想要的是通過每個屏幕的2 ViewModel之間的Id爲我可以知道將被修改的用戶。我是一名使用MVVM Light Framework的初學者,任何人都可以爲我提供這種情況下的最佳解決方案嗎?如何使用MVVM Light在ViewModel之間傳遞變量?
0
A
回答
2
首先將您的變量包裝在類中。
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.Send<VariableMessage>(new VariableMessage() { YourVariable = "Hello"});
0
使用信使(使用往往趨於凌亂代碼信使),我會建議通過ID和「編輯用戶」按鈕/行動然後在目標視圖模型的構造函數中使用該id。
按鈕在你看來:
<Button Content="Edit"
Command="{Binding DataContext.EditButtonCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
CommandParameter="{Binding }" />
在您的視圖模型:
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
}
相關問題
- 1. WPF MVVM-Light如何在ViewModel中使用傳遞的DragEventArgs
- 2. Mvvm Light ViewModel With ViewModel
- 3. 使用MVVM Light的Messenger在視圖模型之間傳遞值
- 4. MVVM Light - ViewModel reusage
- 5. MVVM Light - ViewModel Serialization
- 6. 使用MVVM-Light中的RelayCommand將UIElement傳遞給ViewModel
- 7. 使用MVVM Light從ViewModel查看通知
- 8. 如何在類之間傳遞變量?
- 9. MVVM Light ViewModelLocator:如何註冊Singleton ViewModel?
- 10. 如何使用MVVM Light在ViewModel中獲取所有視圖(UserControl)?
- 11. 如何使用MVVM Light創建ViewModel的多個唯一實例?
- 12. 在flex和php之間傳遞變量
- 13. CodeIgniter:在視圖之間傳遞變量
- 14. 在兩個類之間傳遞變量
- 15. 在opencart頁面之間傳遞變量
- 16. 在Python函數之間傳遞變量
- 17. 在方法之間傳遞變量
- 18. Zend在動作之間傳遞變量?
- 19. 在Python和Javascript之間傳遞變量
- 20. Android在活動之間傳遞變量
- 21. Python:在函數之間傳遞變量
- 22. 在MVVM Light中註冊ViewModel之外的消息?
- 23. 在函數之間傳遞變量
- 24. 在HTML文件之間傳遞變量
- 25. 在PHP表單之間傳遞變量。
- 26. 在方法之間傳遞變量
- 27. python - 在函數之間傳遞變量
- 28. 在腳本之間傳遞PHP變量
- 29. 在類之間傳遞變量
- 30. 在鹽狀態之間傳遞變量
你能進一步解釋,你會怎麼做導航?謝謝 – Antoine