Я относительно новичок в WPF, поэтому извиняюсь, если есть очевидный или простой ответ на этот вопрос, которого я не вижу.
У меня есть ObservableCollection элементов с несколькими изображениями разных размеров для каждого.
Относительный путь для каждого изображения указан в строковом формате, а файлы изображений хранятся в разных подпапках.
Пути изображения в формате:
imagepath = @"subfolder/subfolder/filename.png"
Я бы хотел иметь возможность привязки к текстовому блоку, но показывать только имя файла под каждым изображением без изменения пути к изображению. Это возможно? Я полагаю, что для этого потребуется какой-то конвертер, но я боролся с ним, так как не могу найти разумный способ показать только часть строки.
Спасибо за вашу помощь.
Редактировать
Чтобы уточнить, мое «значение» не является статичным, ссылаясь на элементы в наблюдаемой коллекции, например.
ObservableCollection<Icon> items = new ObservableCollection<Item>();
items.Add(new Item{imagename = "someimagename",
imagepath= "somefolder/somesubfolder/somefilename.png"}) etc...
Я только начинаю понимать «получение» значений из моей коллекции. Любая помощь с заполнением части 'value.Tostring ()', чтобы получить динамические значения для item.imagepath, будет очень признательна, поэтому я могу заставить это работать.
В настоящее время я пытаюсь сделать следующее:
class getFilenameFromPathConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{ Item item = value as Item;
PropertyInfo info = value.GetType().GetProperty("imagepath");
string filename = info.GetValue(item, null).ToString();
return System.IO.Path.GetFileNameWithoutExtension(filename); }
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Но я получаю необработанное исключение: System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
Спасибо