Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF MVVM在视图模型和代码隐藏之间共享对象_Wpf_Mvvm Light - Fatal编程技术网

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,那么在这种情况下就不需要代码隐藏。