私の質問は比較的簡単だと思います。データを表示するページがあります。ボタンをクリックすると、現在の要素の datacontext の 2 層上の要素の datacontext を持つ新しいページが開きます。
説明:
私のViewModelは、より多くのViewModelを含むクラス(ViewModelContainer)です。1 つは値の要約で、もう 1 つはその詳細ビューです。
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 を別のクラスに移動することはできません。そこでしか更新できないためです。
ありがとう