Ich bin ziemlich neu in TPL und UWP und arbeite mit fileopenpicker Steuerung zusammen mit MVVM. Ich habe eine Suchschaltfläche, auf der ich einen FileOpenPicker öffnen und mehrere Dateien auswählen und dann in der Ansicht (mit ListView) widerspiegeln möchte.FileOpenPicker in Viewmodel spiegelt Änderungen in View nicht wider, nachdem mehrere Dateien ausgewählt wurden
Betrachten Sie den Code-Schnipsel für View:
<Button x:Name="search" Content="select image" RelativePanel.RightOf="imagepath" Command="{x:Bind addProduct.SearchCommand}"
Grid.Row="5" Grid.Column="2" Margin="20"></Button>
<ListView x:Name="lstImages" Grid.Row="6" Grid.Column="2" DataContext="{Binding addProduct}" >
<ListView.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}" Width="100" TextAlignment="Left" >
</TextBlock>
<ProgressRing Width="20" Height="20" Foreground="Brown" x:Name="progress" IsActive="True" />
<Button Margin="10, 0, 0, 0" Foreground="Brown" x:Name="Delete" Content="Delete"
Command="{Binding ElementName=lstImages, Path=DataContext.DeleteCommand }" CommandParameter="{Binding}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
In Ansichtsmodell, ich habe meinen Delegate Befehl initialisieren und dann von der Asynchron-Methode verwenden, um die Dateien auszuwählen.
public AddProductViewModel()
{
this.SearchCommand = new DelegateCommand(this.SearchFiles);
}
private async void SearchFiles()
{
var picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".png");
picker.FileTypeFilter.Add(".jpeg");
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
var result = await picker.PickMultipleFilesAsync();
var files = new ObservableCollection<StorageFile>();
if (result != null)
{
foreach (var item in result.ToList())
{
files.Add(item);
}
}
this.Files = files;
//return files;
}
Die Dateien mit dem Picker ausgewählt sind nicht auf der Ansicht wider, während während der Eigenschaft Speicher Dateien mit den richtigen Daten zum Speichern zur Verfügung steht.
Dank Vorschlag, was ist falsch mit dem Code?
Welcher Typ ist 'this.Files'? –
this.Files ist eine ObservableCollection von StorageFile öffentliche ObservableCollection Dateien {get; set;} –