2 votes

Obtenir le chemin de fichier d'une image sur un téléphone Windows

Je suis en train de développer une application pour Windows Phone 8 et j'ai déjà quelques photos dans l'application qui sont placées dans une boîte de liste, comme ceci

<ListBox x:Name="Control" ItemsSource="{Binding Pictures}">
    <ListBox.ItemTemplate>
         <DataTemplate>
              <Grid Background="WhiteSmoke" Margin="10">
                    <Image Source="{Binding Source}" Margin="10"/>
              </Grid>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Le ViewModel est simple pour l'instant.

public class MainPageViewModel : NotificationObject
{
    private ObservableCollection<Picture> _pictures;

    public MainPageViewModel()
    {
        Pictures = new ObservableCollection<Picture>
            {
                new Picture
                    {
                        Source = new BitmapImage(new Uri("../Images/Pictures/1.jpg", UriKind.Relative))
                    }
                 //Add more images here
            };
    }

    public ObservableCollection<Picture> Pictures
    {
        get { return _pictures; }
        set
        {
            _pictures = value;
            RaisePropertyChanged(() => Pictures);
        }
    }
}

Je veux maintenant qu'en tapant sur une image, l'utilisateur ait la possibilité de la partager.

 void ShowShareMediaTask(object sender, GestureEventArgs e)
 {
      ShareMediaTask shareMediaTask = new ShareMediaTask();
      shareMediaTask.FilePath = //something needs to go here
      shareMediaTask.Show();
 }

Avez-vous une idée de la façon dont je peux obtenir le chemin physique (complet) de cette image ?

13voto

Olivier Payen Points 11220

Il semble que vous fassiez référence à des images stockées dans le dossier de l'application (dans le projet). ShareMediaTask ne peut pas y accéder.

El ShareMediaTask nécessite que la photo se trouve dans la bibliothèque multimédia.

Ce que vous devez faire, c'est enregistrer la photo dans la bibliothèque multimédia, puis appeler la fonction ShareMediaTask avec le chemin de l'image sauvegardée (n'oubliez pas d'ajouter la balise using Microsoft.Xna.Framework.Media.PhoneExtensions; pour avoir accès à la GetPath() méthode d'extension).

var picture = mediaLibrary.SavePicture(fileName, stream);
shareMediaTask = new ShareMediaTask();
shareMediaTask.FilePath = picture.GetPath(); // requires using Microsoft.Xna.Framework.Media.PhoneExtensions;
shareMediaTask.Show();

0voto

Mansinh Points 1265

Oui... vous pouvez générer l'événement tap de la boîte de liste en suivant le code ci-dessous

private void Control_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {

        ObservableCollection<Picture> pictureobj=new ObservableCollection<Picture>();
        ListBox lst = (ListBox)sender;
        int i = lst.SelectedIndex;
        if (lst.SelectedValue == null)
        {
        }
        else
        {
            Pictures obj = (Pictures)lst.SelectedValue;
           ShareMediaTask shareMediaTask = new ShareMediaTask();
           shareMediaTask.FilePath = obj.yoursetterimagepath
           shareMediaTask.Show();

        }
    }

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X