Мне нужна помощь. Я хотел бы код (C# XMAL NET MAUI), чтобы при нажатии кнопки в окне (странице или странице содержимого) определенное изображение отображалось в другом окне (странице или странице содержимого), я уже искал много форумов и YouTube и ничего не могу найти =(
Я покажу вам часть кода, чтобы дать вам представление
Кодовая страница 13
<ScrollView>
<VerticalStackLayout BackgroundColor = "White">
<Button x:Name = "Cambiarimagen" Text = "cambiar imagen" BackgroundColor = "Aqua" Clicked = "Cambiarimagen_Clicked" ></Button>
<Image></Image>
</VerticalStackLayout>
</ScrollView>
Кодовая страница 12
public partial class Pagina12 : ContentPage
{
public Pagina12()
{
InitializeComponent();
}
private void Cambiarimagen_Clicked(object sender, EventArgs e)
{
}
}
Заранее большое спасибо
Можешь объяснить мне пожалуйста
Learn.microsoft.com/en-us/dotnet/architecture/maui/…
Да, простой способ — использовать Публиковать и подписываться на сообщения для достижения этой цели.
Шаблон публикации-подписки — это шаблон обмена сообщениями, в котором издатели отправляют сообщения, не зная ни о каких получателях, известны как подписчики. Точно так же подписчики слушают определенные сообщения, не зная ни о каких издателях.
Опубликовать сообщение
MessagingCenter сообщения представляют собой строки. Издатели уведомляют подписчиков о сообщении с одной из перегрузок MessagingCenter.Send.
В следующем примере кода публикуется приветственное сообщение:
MessagingCenter.Send<MainPage>(this, "Hi");
Подписаться на сообщение
Подписчики могут зарегистрироваться для получения сообщения, используя одну из перегрузок MessagingCenter.Subscribe.
В следующем примере кода показан пример этого:
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
});
Примечание:
MessagingCenter устарел в .NET 7 и заменен на WeakReferenceMessenger в CommunityToolkit.Mvvm пакете NuGet. Для получения дополнительной информации см. Messenger.
Обновлять:
Я создал простую демонстрацию для имитации этой функции. Вы можете обратиться к следующему коду:
Ферстпаже.xaml.cs
public partial class FirstPage : ContentPage
{
public FirstPage()
{
InitializeComponent();
MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
{
// Do something whenever the "Hi" message is received
mImage.Source = "grass.png";
});
}
private void Button_NavigateToSecondPage(object sender, EventArgs e)
{
Navigation.PushModalAsync(new SecondPage());
}
}
Ферстпаже.xaml.cs
<?xml version = "1.0" encoding = "utf-8" ?>
<ContentPage xmlns = "http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
x:Class = "MauiPickerApp1121.FirstPage"
Title = "FirstPage">
<VerticalStackLayout>
<Label
Text = "Welcome to First Page"
VerticalOptions = "Center"
HorizontalOptions = "Center" />
<Image x:Name = "mImage" Source = "cherry.png" Margin = "20"/>
<Button Text = "Navigate to next page" Clicked = "Button_NavigateToSecondPage"/>
</VerticalStackLayout>
</ContentPage>
Секондпаже.xaml.cs
public partial class SecondPage : ContentPage
{
public SecondPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
MessagingCenter.Send<object>(this, "Hi");
}
}
Секондпаже.xaml
<?xml version = "1.0" encoding = "utf-8" ?>
<ContentPage xmlns = "http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
x:Class = "MauiPickerApp1121.SecondPage"
Title = "SecondPage">
<VerticalStackLayout>
<Label
Text = "Welcome to Second Page"
VerticalOptions = "Center"
HorizontalOptions = "Center" />
<Button Text = "send message" Clicked = "Button_Clicked" VerticalOptions = "Center"/>
</VerticalStackLayout>
</ContentPage>
Примечание:
Перед отправкой сообщения обязательно подпишитесь на сообщение.
Не могли бы вы помочь мне с примером? Я искал информацию, но я все еще не понимаю
Привет @JonnatanRobertoTC, я обновил свой ответ. Вы можете проверить обновленную часть внизу моего ответа.
Большое спасибо за вашу помощь, я очень ценю это, я долго искал этот код и не мог его найти, и вы сделали объяснение очень понятным
Использовать Центр сообщений