我對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:對象不設置到對象的實例。
感謝
我得到「的對象引用requried對於非靜態字段,方法或屬性......」這是假設你的意思是這樣做的: '回報系統.IO.Path.GetFileName(item.imagepath.ToString());' – Chris
@Chris你可以在這裏粘貼你的文本框「文本」綁定表達式(XAML)嗎? –
確定按照這些說明 1)在轉換器的「轉換」方法上放置一個斷點。 2)當斷點命中檢查正在傳遞的「值」參數。如果「值」參數等於您的文件路徑,那麼很好。如果不讓我知道。 3)如果第2步通過,則清空您的轉換方法並僅添加以下行: return Path.GetFileNameWithoutExtension(value。的ToString()); 試一試。 –