У меня есть файл MainPage.xaml со следующим представлением коллекции
<CollectionView ItemsSource="{Binding AllNotes}"
SelectionMode="Single"
SelectedItem="{Binding SelectedNote}"
SelectionChangedCommand="{Binding SelectedNoteChangedCommand}"
Grid.Row="2" Grid.ColumnSpan="2">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Frame>
<Label Text="{Binding .}" FontSize="Title"/>
</Frame>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
В файле MainPageView.cs я взял значение выбранной заметки, используя следующий код
public string selectedNote;
public string SelectedNote
{
get => selectedNote;
set
{
selectedNote = value;
var args = new PropertyChangedEventArgs(nameof(SelectedNote));
PropertyChanged?.Invoke(this, args);
}
}
SelectedNoteChangeCommand
перенаправляет на DetailPage
, где должна быть напечатана выбранная заметка. SelectedNoteChangeCommand
имеет следующий код
SelectedNoteChangedCommand = new Command(async () =>
{
var detailVM = new ListPageViewDetail.DetailPageView(SelectedNote);
var detailPage = new List.DetailPage();
detailPage.BindingContext = detailVM;
await Application.Current.MainPage.Navigation.PushAsync(detailPage);
});
Теперь, если я отображаю значение SelectedNote
на той же странице, оно отображается, но не отображается в поле метки в DetailPage
DetailPage.xaml имеет поле метки как
<Label Text="{Binding NoteText}" FontSize="Title" Grid.Row="0"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
Файл DetailPageView.cs имеет конструктор как
public DetailPageView(string note)
{
NoteText = note;
DismissPageCommand = new Command(async () =>
{
await Application.Current.MainPage.Navigation.PopAsync();
});
}
Теперь я хочу спросить, как передать SelectedNote
значение переменной для других страниц? NoteText или примечание имеет пустое значение.