0
votes

I used below codes to retrieve image files from LocalFolder

Total images files is 20 in LocalFolder

The problem:

  1. Only 8 images are displayed and the rest is blank.
    Why the rest can not be displayed?

Can bind the BitmapImage file to the image Control as below base on MVVM ?

Example : imageURL ="ms-appdata:///local/imgfile.jpg"

---- In XAML : PhotoView.xaml

<Image x:Name="Img" Source="{Binding ImageUrl}"  Stretch="UniformToFill"/>
<TextBlock FontSize="23" Text="{Binding Unit_Price}"  Height="23" Margin="3,1,3,0"/>  
<TextBlock FontSize="23" Text="{Binding Description}" Height="23" Width="300" Margin="1,1,1,0/>

--- In code behind: PhotoView

 ItemsViewModel itemsViewModel = null;
 ObservableCollection items = null;


itemsViewModel = new ItemsViewModel();
items = itemsViewModel.GetItems();

//-- GridViewControl
ItemsViewSource.Source = items;
ItemsGridView.SelectedItem = null; 


-------------MVVM 
--------- Model : 

class ItemViewModel : ViewModelBase
{
  private string imageurl = string.Empty;
        public string ImageUrl
        {
            get
            { return imageurl; }

            set
            {
                if (imageurl == value)
                { return; }

                imageurl = value;

                isDirty = true;
                RaisePropertyChanged("ImageUrl");
            }
        }

     private decimal unit_price = 0;
        public decimal Unit_Price
        {
            get
            { return unit_price; }

            set
            {
                if (unit_price == value)
                { return; }

                unit_price = value;
                isDirty = true;
                RaisePropertyChanged("Unit_Price");
            }
        }

}

---------- View Model 

 class ItemsViewModel : ViewModelBase
    {
        private ObservableCollection items;

        public ObservableCollection Items
        {
            get
            {
                return items;
            }

            set
            {
                items = value;
                RaisePropertyChanged("Items");
            }
        }


  public ObservableCollection GetItems()
  {
     items = new ObservableCollection();

     using (var db = new SQLite.SQLiteConnection(App.DBPath))
     {

       var query = db.Table().Where(c=> c.CompanyName == Company).OrderBy(c => c.No);

       foreach (var _item in query)
       {
         var item = new ItemViewModel()
         {
             No = _item.No,                   
             ImageUrl = "ms-appdata:///local/" + _item.PictureFilename,
             Unit_Price = _item.Unit_Price,
              Description = _item.Description

           };

              items.Add(item);
         }
      }
    return items;
  }

2

2 Answers

0
votes

Try to bind ImageSource (not string)

0
votes

Try to copy the Image folder in the Folder wherever you are using or Register the Every image in Register.resx and call the image by its name given in the Register