У меня есть ListView, в котором у меня есть изображение и текст внутри viewcell, Что Мое требование, чтобы изменить изображение на выбранной строке, я дружнее его,Как изменить источник изображения при нажатии на ListView в xamarin.forms?
var listView = new MyQuestionView(listData);
listView.ItemSelected += (sender, e) => {
listView.ItemsSource = null;
//Update the IconSource here in listData
var s = e.SelectedItem as MenuItem;
s.IconSource = "foo.png";
listView.ItemsSource = listData; //Updated List
};
Но, экран мерцает для второй при обновлении. Есть ли способ обновить элемент строки.
Это код для моего Listview:
public class MyQuestionView : ListView
{
public MyQuestionView (ObservableCollection<MySelectedQuestions> Qdata)
{
ObservableCollection<MySelectedQuestions> data = Qdata;
ItemsSource = data;
HasUnevenRows = true;
VerticalOptions = LayoutOptions.FillAndExpand;
BackgroundColor = Color.Transparent;
SeparatorVisibility = SeparatorVisibility.Default;
SeparatorColor = Color.FromHex("#4Dffffff");
VerticalOptions = LayoutOptions.FillAndExpand;
HorizontalOptions = LayoutOptions.FillAndExpand;
ItemTemplate = new DataTemplate (() => {
// Create views with bindings for displaying each property.
Label titleLabel = new Label();
titleLabel.FontSize = Device.GetNamedSize(NamedSize.Medium,typeof(Label));
titleLabel.SetBinding (Label.TextProperty, "Text");
Image image = new Image();
image.SetBinding(Image.SourceProperty, "IconSource");
return new ViewCell {
View = new StackLayout {
Padding = new Thickness (5),
Orientation = StackOrientation.Horizontal,
Children = {
image,
new StackLayout {
VerticalOptions = LayoutOptions.Center,
Spacing = 0,
Children = {
titleLabel
}
}
}
}
};
});
}
}
Заранее спасибо.
ли она по-прежнему будет работать, если вы не установите ImageSource нулевое значение, прежде чем изменить его? –
@WilliamCorncobDecker Да, я могу, обновил код смены источника изображения .. –