2016-12-08 3 views
0

Я пытаюсь показать список изображений в проекте UWP Xamarin.Изображение не может быть загружено в ListView в Xamarin?

Я не хочу использовать ImageCell.

Это пример кода с форума Xamarin.

Но я не могу завершить этот код, чтобы успешно работать.

Вот мой код.

<ListView x:Name="listView"> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
      <StackLayout BackgroundColor="#eee" 
      Orientation="Vertical"> 
       <StackLayout Orientation="Horizontal"> 
       <Image Source="{Binding image}" /> 
       <Label Text="{Binding title}" 
       TextColor="#f35e20" /> 
       <Label Text="{Binding subtitle}" 
       HorizontalOptions="EndAndExpand" 
       TextColor="#503026" /> 
       </StackLayout> 
      </StackLayout> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

public class ImageItem { 
string title; 
ImageSource image; 
string subtitle; 
} 
ImageItem a= new ImageItem(); 
a.title = "XXX"; 
a.image = ImageSource.FromFile(String.Format("{0}{1}.png", Device.OnPlatform("Icons/", "", "Assets/"), "noimage")); 
a.subtitle = "XXX"; 
list.Add(a); 
listview.itemsSource = list; 

У меня есть noimage.png в папке Assets UWP Xamarin Project.

Как я могу это сделать?

ответ

0

Я считаю, что вам понадобится ImageItem для реализации интерфейса INotifyPropertyChanged, если вы хотите использовать привязки. Можете ли вы попытаться настроить класс ImageItem следующим образом:

public class ImageItem : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    string _title; 
    public string title 
    { 
     get 
     { 
      return _title; 
     } 
     set 
     { 
      if (_title != value) 
       _title = value; 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs("title")); 
      } 
     } 
    } 

    ImageSource _image; 
    public string image 
    { 
     get 
     { 
      return _image; 
     } 
     set 
     { 
      if (_image != value) 
       _image = value; 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs("image")); 
      } 
     } 
    } 

    string _subtitle; 
    public string subtitle 
    { 
     get 
     { 
      return _subtitle; 
     } 
     set 
     { 
      if (_subtitle != value) 
       _subtitle = value; 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs("subtitle")); 
      } 
     } 
    } 
} 
+0

Все те же. Он отображает название и субтитры, но не только изображение. –

+0

Тогда, возможно, это строка: «ImageSource.FromFile (String.Format (« {0} {1} .png », Device.OnPlatform (« Иконки/»,« »,« Активы/»),« noimage »)); '. Пока изображения находятся там, где они должны находиться в проекте платформы, вам нужно только передать имя файла, поэтому, возможно, попробуйте «ImageSource.FromFile (« noimage.png »)). – jgoldberger

Смежные вопросы