【发布时间】:2014-05-26 23:16:53
【问题描述】:
我正在使用在现有 ViewModel 上设置的 View 和 ViewModel。您可以说这是放置第二个 ViewModel 的基础。
当在 MainViewModel 的底层 ViewModel 中放置另一个 ViewModel(在此特定示例中为 BrowseViewModel)时,关联的 ViewModel 不会显示。
实现如下:
class MainViewModel : PropertyChangedBase
{
private BrowseViewModel _BrowseViewModel= new BrowseViewModel();
public BrowseViewModel BrowseViewModel
{
get { return _BrowseViewModel; }
set
{
if (_BrowseViewModel== value) return;
_BrowseViewModel= value;
NotifyOfPropertyChange("BrowseViewModel");
}
}
}
class BrowseViewModel: PropertyChangedBase
{
private ListingViewModel _ListingViewModel = new ListingViewModel();
public ListingViewModel ListingViewModel
{
get { return ListingViewModel; }
set
{
if (_ListingViewModel == value) return;
_ListingViewModel = value;
NotifyOfPropertyChange("ListingViewModel");
}
}
}
ListingViewModel...
(我在这里剪掉了不相关的代码)
在我的标记(MainView)中实现:
<ContentControl x:Name="BrowseViewModel"/>
在BrowseView:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<ContentControl x:Name="ListingViewModel"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
我今天在将另一个 ViewModel 添加到 MainViewModel 的现有底层 ViewModel 时遇到了完全相同的问题。如果我没有基础 ViewModel 并且使用当前的 MainViewModel,则一切正常。
注意:我告诉 Caliburn 在之前命名的命名空间中查找 View 及其 ViewModel,这没有问题。
【问题讨论】:
-
您如何编写 MainView 以显示您的 TestControlView?你能给我们一个例子(XAML)我有一个想法,但要确认一下......
-
@mvermef 好了。我更新了我的问题并包含了一些真实姓名以使事情清楚。我应该说我在
DataGrid上使用这个ViewModel,但是我现在提供了。
标签: c# wpf mvvm caliburn.micro caliburn