我有一个WPF应用程序,其中一个窗口有一个ViewModel,它在MainWindow
内ContentControl
内托管多个用户控件(带有自己的视图模型)。我在主窗口的视图模型中为我的所有用户控件设置了视图模型,如下所示:
// Add Client Billing pages
ActiveContributorsVM = new ActiveContributorsVM();
PageViewModels.Add(ActiveContributorsVM);
所以,在我主窗口的XAML中,我有:
<Window.Resources>
<!--Client Billing User Controls and View Models-->
<DataTemplate DataType="{x:Type ClientViewModels:ActiveContributorsVM}">
<ClientViews:ActiveContributors />
</DataTemplate>
</Window.Resources>
其中ActiveContributorsVM
是ViewModel
,而ActiveContributors
是我在内容控件中托管的用户控件的视图。这很好,显示一切都很完美。然后我尝试将一个行为添加到ActiveContributors用户控件的XamDataGrid的xaml中,如下所示:
<igDP:XamDataGrid Name="ActiveDP" Grid.Row="3" Theme="RoyaleStrong" ActiveDataItem="{Binding SelectedItem}" BindToSampleData="False" DataSource="{Binding ActiveContrib}" AutoFit="True" >
<i:Interaction.Behaviors>
<b:XamDataGridSelectedItemsBehavior SelectedItems="{Binding SelectedItems}" />
</i:Interaction.Behaviors>
这导致行为类中的null异常,特别是SelectedItems
集合。我假设它正在使用我的ActiveContributorsVM
视图模型的不同实例。我如何引用已经创建的Vview模型?我知道在设置datacontext时行为类工作正常,如我从中得到的示例:http://www.infragistics.com/community/forums/t/80298.aspx