私は以下のビューとviewModelsビューを持っています:Staff、VM:StaffViewModelとView:Notes、VM:NotesViewModel。wpf mvvmlight viewmodelにデータを渡す
私のStaffViewModelには、SelectedEmployeeタイプのSelectedStaffMemberプロパティがあります。
スタッフビューには別のビュー(注釈)を起動するボタンがあります。
ユーザーがメモを入力すると、SelectedEmployeeに対して保存する必要があります。つまり、NotesViewModelは現在選択されている従業員IDを知る必要があります。
今私のViewModelLocatorでこれをやっていますが、これは間違っているようですが、どのような方法でVMにデータを渡すのですか?
私はMVVM Lightを使用しています。
関連するコード - StaffViewModel
public Employee SelectedEmployee
{
get { return _selectedEmployee; }
set
{
if (value == _selectedEmployee) return;
_selectedEmployee = value;
HolidayAllowance = _staffDataService.GetEmployeeHolidayAllowance(_selectedEmployee.Id);
RaisePropertyChanged();
RaisePropertyChanged(nameof(HolidayAllowance));
}
}
NoteViewModel
public RelayCommand SaveNoteCommand { get; private set; }
private void SaveNote()
{
var note = new Note
{
NoteContent = NoteContent,
EmployeeId = ViewModelLocator.Staff.SelectedEmployee.Id,
NoteDate = NoteDate
};
_dataService.SaveNote(note);
}
私は追加のノートのビューを表示するMahAppsフライアウトを使用しています:ビューが示されており、 。これは、それがから起動されますMainView.xaml NOT Staff.xaml、SelectedEmployeeを取得する別の問題と思われるID:
MainView.xaml
<controls:Flyout Name="AddNoteFlyout"
Header="Add Note"
IsModal="True"
IsOpen="{Binding IsAddNoteOpen}"
Opacity="85"
Position="Right"
Width="450">
<views:AddNote VerticalAlignment="Top" Margin="0,30,0,0"/>
</controls:Flyout>
私のスタッフビューが登録するビューを起動するボタンをクリックするとメッセージが表示されます。メッセージにはselectedEmployeeIdが含まれます。それは良い方法だろうか?