Я использую библиотеку Prism для реализации связывания Image с BitmapImage.
Это xaml
<Button Grid.Row="1" Text="Resize Img" Command="{Binding ImageResize}"></Button>
<Image Grid.Row="2" Source="{Binding ImageResult}"></Image>
<Image Grid.Row="3" Source="{Binding ImageUri}"></Image>
<Label Text="{Binding ImageUri}"></Label>
Это ImagePageViewModel
public class ImagePageViewModel : BindableBase
{
public ImagePageViewModel()
{
}
private string _imageUri;
public string ImageUri
{
get { return _imageUri; }
set { SetProperty(ref _imageUri, value); }
}
private BitmapImage _imageResult;
public BitmapImage ImageResult
{
get { return _imageResult; }
set { SetProperty(ref _imageResult, value); }
}
private DelegateCommand _imageSelect;
public DelegateCommand ImageSelect =>
_imageSelect ?? (_imageSelect = new DelegateCommand(ExecuteImageSelect));
async void ExecuteImageSelect()
{
try
{
var picker = new Windows.Storage.Pickers.FileOpenPicker
{
ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail,
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary
};
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
// Set the image source to the selected bitmap
BitmapImage bitmapImage = new BitmapImage();
//bitmapImage.DecodePixelWidth = 600; //match the target Image.Width, not shown
await bitmapImage.SetSourceAsync(fileStream);
ImageResult = bitmapImage;
ImageUri = file.Path;
//ImageUri = @"http://pic26.nipic.com/20121221/9252150_142515375000_2.jpg";
}
}
else
{
ImageUri = "";
}
}
catch (Exception ex)
{
throw ex;
}
}
}
Для приведенного выше кода, настройкаImageResult
и установка ImageUri с помощью file.Path
оба не работают. File.Path возвращает правильное значение для файла.
Работает только при использовании с сетевым файлом.
Связано ли это с правами доступа к файлу, если вы просматриваете файл на локальном диске?
Я предполагаю, что это связано с разрешением файла UWP, но есть идеи, как его разрешить?