Мое изображение.Исходный индекс не меняется вместе со списком

#c# #image #xamarin.forms #indexing

Вопрос:

Может ли кто — нибудь помочь мне с проблемой индекса. Линия для моего изображения.Источник был добавлен, и, похоже, он не обновляет изображения в списке. Текст обновляется просто отлично. Как мне получить индекс от GrapplingGuard[ndx].imageA для обновления изображения?

Первоначально грейферная защита[ndx].imageA был GrapplingGuard[0], однако я предполагаю, что мне нужно указать, что он должен относиться к [ndx]. ImageAI попытался переместить строку после контекста привязки, но это ничего не изменило. Нужно ли мне что-то включать в раздел «Нажата кнопка»?

 public partial class BGGrappling : ContentPage
{
    List<GrapplingGuard> GrapplingGuard { get; set; }

    int ndx = 0;

    public BGGrappling()
    {
        InitializeComponent();

        GrapplingGuard = new List<GrapplingGuard>
        {
            new GrapplingGuard
            {
                TitleText = "Long Guard",
                EngText = "Eng Text 1",
                ItText = "IT Text 1",
                PageNo = "1/4",
                ImageA = "HemaSwordFiore.Images.BGGrapple.LongGuard.png"
            },
            new GrapplingGuard
            {
                TitleText = "Boar's Tooth",
                EngText = "Eng Text 2",
                ItText = "IT Text 2",
                PageNo = "2/4",
                ImageA = "HemaSwordFiore.Images.BGGrapple.BoardsTooth.png"
            }
        };

        //[ndx] not changing image from list
        MyImage.Source = ImageSource.FromResource(GrapplingGuard[ndx].ImageA, typeof(BGGrappling).GetTypeInfo().Assembly);

        BindingContext = GrapplingGuard[ndx];
    }
    async void OnButtonClicked(object sender, EventArgs e)
    {
        ndx  ;

        if (ndx < GrapplingGuard.Count amp;amp; ndx <= 3)
        {
            BindingContext = GrapplingGuard[ndx];
        }
        else
        {
            await Navigation.PopAsync();
        }
    }
 

Комментарии:

1. Для элемента управления myImage вы устанавливаете источник напрямую или устанавливаете источник с привязкой в xaml? Если вы используете привязку, использовали ли вы INotifyPropertyChanged для обновления? Если вы устанавливаете источник напрямую, вы установили действие сборки для встроенного ресурса?

2. Привет @WendyZang-MSFT, у меня действительно есть привязка на стороне xaml (x:Имя=»Мой образ»). Я добавил INotifyPropertyChanged, но его нужно установить в список Список<GrapplingGuard> GrapplingGuard<GrapplingGuard> , так как это то, что обновляется, но я продолжаю получать сообщение об ошибке, что изменение свойств?. Вызов должен быть перед = или —

3. Не могли бы вы предоставить мне более подробную информацию с кодом для воспроизведения?

4. Привет @WendyZang-MSFT, я сделал следующее для строки myImage, так как это то, что руководство сделало на сайте MS по привязке данных, но безуспешно: ** публичная строка myImage { get => myImage; set { myImage = значение; var args = new PropertyChangedEventArgs(имя(myImage)); PropertyChanged?. Вызов(это, аргументы); } }**

5. Если это возможно, не могли бы вы предоставить мне образец кода для воспроизведения? Вы можете загрузить на github или другие диски и дать мне ссылку.

Ответ №1:

Я нашел решение, мне пришлось добавить MyImage.Source строку в раздел увеличения

 async void OnButtonClicked(object sender, EventArgs e)
{
    ndx  ;

    if (ndx < GrapplingGuard.Count amp;amp; ndx <= 3)
    {
        BindingContext = GrapplingGuard[ndx];
    }
    else
    {
        await Navigation.PopAsync();
    }
    ...
}