私は、最初のタブにWPFデータグリッドを読み込むtabcontrolを持っています。 DataGridの行は、MemberViewModelsで埋められた です。 データグリッドのselectItemが変更されたときに、選択したMemberViewModelを取得できましたが、コマンドを使用してTabItemsコレクションに追加するRibbonViewModelにどのように渡すことができますか? RibbonViewModelは、私のリボンのViewModelです。そのリボンには、tabItemsCollectionに新しいMemberViewModelを追加するボタンがありますが、これはうまくいきます。しかし、私は新しいタブアイテムとして追加するために私のデータグリッドから選択されたMemberViewModelを追加したい。WPF DataGridから新しいTabItem MVVMに選択されたViewModelを渡します。
(OverviewViewModelで)選択datagriditemから選択MemberViewModelを取得するTabItemsCollection
private void AddSelectedMemberTabItem(object notUsed)
{
_tabViewModel.TabItems.Add(new MemberViewModel{ Header = "Member" }); // OK, this works fine
_tabViewModel.TabItems.Add(SelectedMemberViewModel); // this doesnt work, DP SelectedMemberViewModel is never filled, don't know how to retrieve it from the selected datagrid item.
_addOverview.RaiseCanExecuteChanged();
}
コードに新しいMemberViewModelを追加RibbonViewModel内のコード(コマンド):
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(MemberViewModel), typeof(OverviewViewModel), new UIPropertyMetadata(OnSelectedMemberPropertyChanged));
public MemberViewModel SelectedItem
{
get { return (MemberViewModel)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
private static void OnSelectedMemberPropertyChanged(DependencyObject m, DependencyPropertyChangedEventArgs args)
{
var selectedMember = m.GetValue(SelectedItemProperty) as MemberViewModel;
_ribbonViewModel.SelectedMemberViewModel = selectedMember; // error: cannot access non-static field (_ribbonViewModel) in static contect
}
どのようにすることができますOverviewViewModelのOnSelectedMemberPropertyChangedメソッドから_ribbonViewModel.SelectedMemberViewModelを入力しますか?または私はこれで間違った方法を行っていますか?
**関連** XAMLを表示できますか? –
どのようなXAMLが必要ですか? DataGridにデータをバインドするもの、またはMembersViewModelをTabControlにバインドするもの? RibbonViewModelの新しいMemberViewModelsのコマンドを使用してtabItemCollectionに追加すると、タブが追加されるため、すべて正常に動作するため、そこに何か問題があるとは思われません。これで結構です。 私は、OverviewMemberViewModel(OverviewViewModelのDataGrid項目)をribbonControlViewModelに渡す方法を知りません。それは私の主な問題です... – PitAttack76
外部からの視点からは、すべてのテキストではないときに問題を見るのが簡単です。 (XAMLは、アプリケーションのさまざまな部分の関係を確認するのに役立ちます)。あなたが見ているのは簡単です。なぜなら、他の誰もそれを見たことがないN時間のためにそれを見ているからです。 :) –