#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();
}
...
}