ViewModel に含まれるデータを使用してファイルを書き込むために、コード ビハインドで SaveFileDialog を使用したいと考えています。私が使用している XAML クラスは、親クラスのリスト ボックスで行われた選択によって設定されます。
<Views:ChildView DataContext="{Binding Path=SelectedItem, ElementName=childrenListbox}"></Views:ChildView >
次に、ChildView XAML ファイル内で、期待どおりに ChildViewModel のプロパティ/メソッドに自由にアクセスできます。ただし、コードビハインドからそれらにアクセスする方法がわかりません。「ファイルを保存」ボタンがあります
<Button Content="Save File" Click="Button_Click"></Button>
そのイベントはコード ビハインドで処理されます。
private void Button_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document";
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
string filename = dlg.FileName;
//Here I would like to call the SaveFile function in ChildViewModel
}
}
利用可能なすべてのプロパティを調べてみましたが、使用している ChildViewModel のインスタンスにアクセスする方法が見つかりません。この質問には簡単な解決策があるかもしれませんが、私は最初のギルドを作成していて、MVVM アプローチを使用しているため、コード ビハインドの使用に慣れていません。実用的な解決策を見つけるのに役立つ回答をいただければ幸いです。また、それを回避し、XAML のみを使用して SaveFileDialog を取得する方法がある場合は、MVVM でコード ビハインドを使用することについて私を批判してください (そうすれば、ModelView 内でファイルを簡単に保存できます)。