WPF在后面的代码中初始化对象,并在viewmodel中使用该对象

时间:2017-08-09 10:33:37

标签: c# wpf xaml mvvm

我需要在xaml.cs代码中初始化对象,然后在我的绑定视图模型中使用该对象。但是当我这样做时,对象正确初始化,但是viewmodel表现得像它仍然是空的。

MainWindow.xaml

<oxys:PlotView x:Name="dataPlot" Model="{Binding DataPlotModel}" Margin="10,10,185,39"/>

MainWindow.xaml.cs

MainWindowViewModel viewModel;

public MainWindow()
{
    viewModel = new MainWindowViewModel();
    DataContext = viewModel;

    InitializeComponent();

    PlotModel DataPlotModel = new PlotModel();
    dataPlot.Model = DataPlotModel;
}

MainWindowViewModel.cs

public PlotModel DataPlotModel { get; set; }

除非我在viewmodel中严格初始化它,否则viewmodel中的DataPlotModel始终为null。

1 个答案:

答案 0 :(得分:1)

您需要在某处设置视图模型的DataPlotModel属性:

MainWindowViewModel viewModel;

public MainWindow()
{
    viewModel = new MainWindowViewModel();
    DataContext = viewModel;

    InitializeComponent();

    viewModel.DataPlotModel = new PlotModel(); //<-- Set the view model property
}

您应该设置视图模型属性,而不是直接设置控件的属性,因为这会破坏绑定。