私はParentView(DashboardConsultants)に、ユーザーのマウスポインターがセル上にホバーされたときにカスタムツールチップを表示するグリッドビューを持っています。ツールチップには、そのセルにバインドされた契約の情報を表示するビュー(AgreementDetails_View)が表示されます。 ParentViewに親ビューから子への情報を渡すViewModel
DataGridのセル:
<DataGridTextColumn Header="Okt" Width="*" x:Name="test">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Tag" Value="{Binding Months[9].AgreementID}"/>
<Setter Property="Background" Value="White" />
<Setter Property="DataGridCell.ToolTip" >
<Setter.Value>
<v:UC1001_AgreementDetails_View Background="#FFF" Opacity="0.88" />
</Setter.Value>
</Setter>
マイChildView:ViewModelにで
public UC1001_DashBoardConsultants_View(UC1001_DashboardConsultantViewModel viewModel)
{
InitializeComponent();
this.DataContext = viewModel;
}
、私は方法を以下している私はあなたがよりよい私の質問を理解できるように、私が今持っているコードを表示しますデータベースから正しい合意を得るために:
private void GetRefData()
{
UC1001_ActiveAgreementArguments args = new UC1001_ActiveAgreementArguments();
args.AgreementID = 3;
DefaultCacheProvider defaultCacheProvider = new DefaultCacheProvider();
if (!defaultCacheProvider.IsSet("AgrDet:" + args.AgreementID))
{
ConsultantServiceClient client = new ConsultantServiceClient();
AgreementDetailsContract = client.GetAgreementDetailsByAgreementID(args);
defaultCacheProvider.Set("AgrDet:" + args.AgreementID, AgreementDetailsContract, 5);
}
else
{
AgreementDetailsContract = (UC1001_ActiveAgreementContract)defaultCacheProvider.Get("AgrDet:" + args.AgreementID);
}
}
今のところわかるように、メソッドは常に同じアグリーメントを呼び出します(私はテスト目的でこれを行いました)が、今ではIDがDataGridのセルタグで指定されたアグリーメントを望みます(この例ではMonths[9].AgreementID
です)。
子ビューのコンストラクタのViewModelに渡すことはできますが、MVVMパターンのため許可されていないと思われます(または許可されていますか?)。
私の質問は:ChildViewのViewModelにParentViewで指定されたAgreementIDを渡して、ChildViewの正しいデータを取得するにはどうすればいいですか?
勿論、より多くの情報/コード/明確化は喜んでばかり事前に:)
感謝を聞いて、提供することができます!私はRIGH方法で質問を得たが、あなたのような私の気持ちは、親自身
私も、コマンドの考えが、私は(ツールチップのプロパティでコマンドを定義することはできませんから見ることができ
AgreementDetails
というプロパティを持っていたことを確実にするでしょう私はMonth []。AgreementIDと呼ぶことができます)、あるいはあなたは他の場所にコマンドを置くことをお勧めしますか? –親ビューで契約の詳細を表示するのはなぜですか?なぜ、AgreementViewはこれをしないのですか(実際には、契約を守るための参照を持つAgreementViewModelと結びついています)? – sll
どういう意味ですか? ParentViewにはグリッドがあり、各セルにはAgreementIDが含まれています。セルの上にマウスポインタを置くと、(AgreementIDだけでなく)その契約の詳細情報を含むビューのツールチップが表示されます –