Je débute en programmation C#/WPF/Surface.Supprimer des fichiers qui ont été utilisés dans un C# LibraryStack dans un Scatterview
J'utilise un LibraryStack
dans un ScatterViewItem
dans un ScatterView
:
<Grid Name="DataGrid" Background="LightBlue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.Resources>
<DataTemplate x:Key="LibraryItemTemplate">
<Viewbox Stretch="Uniform">
<Image Source="{Binding}" />
</Viewbox>
</DataTemplate>
<!-- Styles to ensure each library control uses the above defined templates -->
<Style TargetType="{x:Type s:LibraryStack}">
<Setter Property="ItemTemplate" Value="{StaticResource LibraryItemTemplate}"/>
</Style>
<Style TargetType="{x:Type s:LibraryBar}">
<Setter Property="ItemTemplate" Value="{StaticResource LibraryItemTemplate}"/>
</Style>
<DataTemplate x:Key="itemTemplate">
<Image Source="{Binding [email protected]}"/>
</DataTemplate>
</Grid.Resources>
<s:ScatterView HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<s:ScatterViewItem Name="ScatterViewItem1" Background="DarkGray" MinWidth="800" MinHeight="800"
Orientation="0.0" CanRotate="False">
<s:LibraryStack Name="LibraryStack1" Background="Transparent" MinWidth="800" MinHeight="800" AllowDrop="True" >
</s:LibraryStack>
</s:ScatterViewItem>
</s:ScatterView>
</Grid>
Je remplir la pile Bibliothèque en définissant un ObservableCollection
au ItemsSource
du LibraryStack
. Le ObservableCollection
est constitué de chaînes, qui sont des chemins d'accès aux images.
ObservableCollection<string> oc = new ObservableCollection<string>(System.IO.Directory.GetFiles(folder));
LibraryStack1.ItemsSource = ocs;
Maintenant, j'ai un ScatterViewItem
avec toutes les images en elle avec le glisser-déposer.
Ensuite, je veux effacer toutes les images du LibraryStack
/ScatterViewItem
et supprimer tous les fichiers/images dans le dossier:
oc=null;
LibraryStack1.ItemsSource = null;
string[] files = Directory.GetFiles(folder);
foreach (String file in files)
{
try
{
File.Delete(file);
}
catch (Exception f)
{
Console.WriteLine(f);
}
}
Le ScatterViewItem à l'écran est vide, mais il y a AllWays une exception levée, en supprimant les fichiers (File.Delete(file)
):
System.IO.IOException: le processus ne peut pas accéder au fichier « xyz », car il est utilisé par un autre autre processus. à System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) à System.IO.File.Delete (chemin String) ...
Suppression sur FileInfo
lance la même exception.
Que dois-je faire?
C'est peu susceptible d'aider, il ressemble à un problème de verrouillage de fichier non un problème d'autorisations de fichiers –