Команда открытия диалогового окна запускается кнопкой ContextMenu в моем «Главном Page» (LibraryPage)
Содержимое диалогового окна представляет собой набор текстовых полей, которые я определяю в другом xaml (LibraryAddSongControl)
Но я не могу напрямую открыть диалоговое окно из моя ViewModel, потому что я не могу получить оттуда доступ к необходимому XamlRoot. И я не могу получить доступ к содержимому текстовых полей диалога, поскольку они лежат в LibraryAddSongViewModel
LibraryPage.xaml
Код: Выделить всё
Код: Выделить всё
Код: Выделить всё
[RelayCommand]
public async Task AddNewSong()
{
ContentDialog dialog = new();
dialog.XamlRoot = //Not accessible from ViewModel!
dialog.Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style;
dialog.Title = "Add a new Song to the Library";
dialog.PrimaryButtonText = "Add";
dialog.CloseButtonText = "Cancel";
dialog.IsSecondaryButtonEnabled = false;
dialog.DefaultButton = ContentDialogButton.Primary;
dialog.Content = App.GetService();
ContentDialogResult result = await dialog.ShowAsync();
if (result == ContentDialogResult.Primary)
{
//Logic to handle Save command from Dialog
}
}
Код: Выделить всё
public void AddSong()
{
SqliteHelper.AddSong(new Song
{
SongTitle = Title,
SongDescription = Description,
SongAlbum = Album,
SongArtists = [$"{Artists}"],
SongDuration = (60 * Convert.ToInt32(Duration.Substring(0, 2)) + Convert.ToInt32(Duration.Substring(3, 2))),
SongURL = Url,
});
}
Мой главный вопрос: что такое чистое решение в стиле MVVM для отображения диалогового окна из Xaml1, когда в самом диалоговом окне также есть такие элементы, как текстовые поля, которые имеют значения, которые необходимо обрабатываются (в моем случае просто сохраняются в базу данных)
Подробнее здесь: https://stackoverflow.com/questions/783 ... nui-3-mvvm