WPF MVVM在视图模型和代码隐藏之间共享对象
我试图在视图模型和代码隐藏之间共享以下对象WPF MVVM在视图模型和代码隐藏之间共享对象,wpf,mvvm-light,Wpf,Mvvm Light,我试图在视图模型和代码隐藏之间共享以下对象 Dictionary<ItemTypeType, Dictionary<string, Dictionary<int,List<ConfigParameter>>>> ItemToConfigParametersValues 字典项到配置参数值 此对象未在XAML中使用。它在代码隐藏中用于几个动态生成的UI元素 MVVM Light是如何做到这一点的?嗯,ViewModel通常被设置为视图的“Data
Dictionary<ItemTypeType, Dictionary<string, Dictionary<int,List<ConfigParameter>>>> ItemToConfigParametersValues
字典项到配置参数值
此对象未在XAML中使用。它在代码隐藏中用于几个动态生成的UI元素
MVVM Light是如何做到这一点的?嗯,ViewModel通常被设置为视图的“DataContext”。代码隐藏是视图的一部分
所以。。。只需公开ViewModel中的数据。在代码隐藏中,您可以使用属性(通过适当的转换)访问它。嗯,ViewModel通常被设置为视图的“DataContext”。代码隐藏是视图的一部分
所以。。。只需公开ViewModel中的数据。在您的代码隐藏中,您可以使用属性(通过适当的转换)访问它。我会将viewmodel存储在一个变量中,因此我不需要每次都转换DataContext。。。例如,在MainWindow.xaml.cs代码隐藏中:
private MainWindowViewModel _vm;
public MainWindow()
{
InitializeComponent();
this._vm = new MainWindowViewModel();
// this._vm.MyProperty = ... (or does the vm instantiate MyProperty?)
this.DataContext = this._vm;
}
private void HandleSomeEvent(object sender, RoutedEventArgs e)
{
var sharedObject = _vm.MyProperty;
}
我会将viewmodel存储在一个变量中,这样我就不需要每次都转换DataContext。。。例如,在MainWindow.xaml.cs代码隐藏中:
private MainWindowViewModel _vm;
public MainWindow()
{
InitializeComponent();
this._vm = new MainWindowViewModel();
// this._vm.MyProperty = ... (or does the vm instantiate MyProperty?)
this.DataContext = this._vm;
}
private void HandleSomeEvent(object sender, RoutedEventArgs e)
{
var sharedObject = _vm.MyProperty;
}
谢谢你的回答。这就是我想做的。但这不是一件坏事吗?@Nick我想真正的问题是,你想做什么?试图揭露这样的事情似乎。。。不合理。@NETscape用户界面必须允许用户修改、查看和编辑在运行时之前无法完全理解的数据。@您可以在运行时将数据加载到视图模型中,然后显示。如果您正确地遵循MVVM,那么在这种情况下就不需要代码隐藏。谢谢您的回答。这就是我想做的。但这不是一件坏事吗?@Nick我想真正的问题是,你想做什么?试图揭露这样的事情似乎。。。不合理。@NETscape用户界面必须允许用户修改、查看和编辑在运行时之前无法完全理解的数据。@您可以在运行时将数据加载到视图模型中,然后显示。如果您正确地遵循MVVM,那么在这种情况下就不需要代码隐藏。