2016-05-10 2 views
1

У меня есть изображение с именем fb.png и оно находится в корневом проекте (prtable), и я добавляю это изображение в Resource>drawble в проект Droid.Изображение не отображается в Xamarin.forms (PCL)

Thees мой MainPage.xaml код:

<Image x:Name="img1"></Image> 

И Thees мой MainPage.xaml.cs код:

public MainPage() 
    { 
     InitializeComponent(); 

     ImageSource img = ImageSource.FromResource("App2.fb.png"); 
     img1.Source = img; 
     img1.Aspect = Aspect.AspectFit; 
     img1.BackgroundColor = Color.Navy; 

    } 

Что изменилось, так это нужно, что изображение будет появляться?

+0

Вы говорите, что ваш образ называется fb.png, но в вашем коде вы назвав его «App2.fb.png». Вам нужно использовать «fb.png» в вашем ImageSource.FromResource –

ответ

2

Если файл будет сохранен в папке/вытяжке каталог ресурсов, то вы используете FromFile, не FromResource. FromResource используется для изображений, упакованных как встроенные ресурсы в вашу встроенную библиотеку.

Кроме того, необходимо указать точное имя файла, как оно появляется в Resources/Drawable, так что это должно сделать это:

public MainPage() 
{ 
    InitializeComponent(); 

    ImageSource img = ImageSource.FromFile("fb.png"); 
    img1.Source = img; 
    img1.Aspect = Aspect.AspectFit; 
    img1.BackgroundColor = Color.Navy; 

} 
+0

К сожалению, это не работает. – distance

+1

Другие вещи, чтобы попробовать: убедитесь, что fb.png в вашем проекте Android в Ресурсах/drawable имеет BuildAction для AndroidResource. Затем опубликуйте весь файл MainPage.xaml, так как представление контейнера может вызвать проблемы. И будьте более конкретными о том, что вы подразумеваете под «это не работает». Разве изображение не появляется? Это рушится? – DavidS

+0

Я устанавливаю 'buildAction' из' content' в 'AndroidResource' И появляется изображение. – distance

0

Здесь представлена ​​полная реализация ресурса изображений, связанных с MVVM, для управления изображениями. Вам нужно установить свою модель просмотра в качестве контекста вашей страницы, где находится XAML. Также доступ как «App2.fb.png» кажется странным, он должен быть просто fb.png. Это может быть проще исправить .. просто переименовать источник изображения для точного названия изображения, как указано в Droid> ресурсы

XAML

<Image 
Aspect="AspectFit" 
Source="{Binding PropertyImageStatusSource}"> 

Base ViewModel

иметь свой viewmodels наследуют от базового класса viewmodel, поэтому INotifyPropertyChanged реализуется на ваших аксессуарах повсеместно.

public class _ViewModel_Base : INotifyPropertyChanged 
    { 


     //figure out what is getting set 
     public virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null) 
     { 
      if (Object.Equals(storage, value)) 
       return false; 

      storage = value; 
      OnPropertyChanged(propertyName); 



      return true; 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 

     //attach handler with property name args to changing property, overridable in inheriting classes if something else needs to happen on property changed 
     protected virtual void OnPropertyChanged(string propertyName) 
     { 
      PropertyChangedEventHandler handler = PropertyChanged; 

      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 
} 

ViewModel

Public MyViewModel : _ViewModel_Base 
{ 
    private string ImageStatusSource = "fb.png"; 
    public string PropertyImageStatusSource 
    { 
     set { SetProperty(ref ImageStatusSource, value); } 
     get { return ImageStatusSource; } 
    } 

} 
+0

К сожалению, это не работает. Я поставил выше codeBehind в 'public MainPage()' метод? – distance

+0

Я думаю, что это может быть так, как вы называете ресурс. Обновленный ответ для размышлений. –

+0

Пожелайте людям сказать, почему они голосуют. Свойство изменило метод модели базового представления - это текстовая книга MVVM Xamarin. Модель просмотра ничего не делает, кроме как установить свойство encapsulated для привязки. Этот подход используется в моих корпоративных приложениях и будет найден в https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/; Я всегда открыт для обсуждения, если есть лучший способ приблизиться к нему, так сказать, вместо того, чтобы голосовать без объяснений. –

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