我想我的问题相对简单。我有一个页面来显示我的数据。单击按钮时,我想打开一个新页面,其中包含比当前元素的数据上下文高 2 层的元素的数据上下文。
解释:
我的 ViewModel 是一个包含更多 ViewModel 的类 (ViewModelContainer)。一个是价值观的总结,一个是详细的观点。
public class SummaryViewModel
{
public int somevalue; // is a property
public ObservableCollection<SummarizedItems> items; // is a property
}
public class DetailsViewModel
{
public int someOthervalue; // is a property
public int stuffA; // is a property
public int stuffB; // is a property
}
public class ViewModelContainer : ViewModelBase
{
private SummaryViewModel _sum;
public SummaryViewModel sum { } // is a property
private DetailsViewModel _det;
public DetailsViewModel det { } // is a property
}
我可以按下按钮的视图绑定到 SummaryViewModel 的 ObservableCollection 的值。到目前为止一切都很好。当我按下按钮时,应该打开一个显示详细信息的新页面。我使用 ICommand 来处理单击,并将详细信息视图作为 CommandParameter 传递给它。
<Button Name="OpenDetailsButton" Command="{Binding Path=ACommand}" CommandParameter="{DynamicResource Details}"
我将页面定义为同一文件中的资源,其中数据上下文仍然是 ViewModelContainer。
<pages:DetailsViewPage DataContext="{Binding Path=det }" x:Key="Details"/>
页面打开,但数据上下文不可用。我收到以下错误:
System.Windows.Data Error: 3 : Cannot find element that provides DataContext.
有谁知道我如何打开详细信息视图并提供数据上下文?我无法将 DetailsViewModel 移动到另一个类,因为只能在那里更新它。
谢谢