Mit einem wpf ListBox
Ich versuche, eine Liste von Dateinamen anzuzeigen, ohne den vollständigen Pfad anzuzeigen (bequemer für Benutzer).Dateipfad zum Dateinamen Stringkonverter funktioniert nicht
Die Daten stammen von einem ObservableCollection
, der mit Dialog gefüllt wird.
private ObservableCollection<string> _VidFileDisplay = new ObservableCollection<string>(new[] {""});
public ObservableCollection<string> VidFileDisplay
{
get { return _VidFileDisplay; }
set { _VidFileDisplay = value; }
}
Am Ende möchte ich einige Elemente auswählen und den vollständigen Dateipfad zurück erhalten. Dazu habe ich einen Konverter:
public class PathToFilenameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//return Path.GetFileName(value.ToString());
string result = null;
if (value != null)
{
var path = value.ToString();
if (string.IsNullOrWhiteSpace(path) == false)
result = Path.GetFileName(path);
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
Was ich an meine listbox ItemSource binden:
<ListBox x:Name="VideoFileList" Margin="0" Grid.Row="1" Grid.RowSpan="5" Template="{DynamicResource BaseListBoxControlStyle}" ItemContainerStyle="{DynamicResource BaseListBoxItemStyle}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding Path=DataContext.VidFileDisplay, Converter={StaticResource PathToFileName},ElementName=Ch_Parameters, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=SelectedVidNames,ElementName=Ch_Parameters, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
Ohne den Konverter, es funktioniert gut (aber natürlich ist der vollständige Pfad in der Listbox angezeigt). Mit dem Konverter habe ich ein Zeichen pro Zeile ... Anzeige:
System.Collections.ObjectModel.ObservableCollection`1[System.String]
Wo liege ich falsch?
Danke
das war es. Vielen Dank – lecloneur