WPF MVVM在视图模型和代码之后共享对象

时间:2016-02-03 15:44:47

标签: wpf mvvm-light

我正在尝试在我的视图模型和背后的代码之间共享以下对象

.prev('h3')

此对象未在XAML中使用。它在后面的代码中用于几个动态生成的UI元素。

MVVM Light的做法是什么?

2 个答案:

答案 0 :(得分:2)

嗯,ViewModel通常设置为View的“DataContext”。代码隐藏是View的一部分。

所以......只是暴露ViewModel中的数据。在您的代码隐藏中,您可以使用DataContext属性(使用适当的转换)访问它。

答案 1 :(得分:0)

我会将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;
}