바인딩 목록에 INotifyPropertyChanged 인터페이스가 있습니다. 모든 것이 잘 작동합니다. 이 바인딩 목록은 목록 상자에 바인딩 된 파일 이름 목록입니다. 전체 경로가 아닌 이름 만 표시되기를 원하지만 파일 이름을 선택하고 파일을로드 할 때 전체 경로가 필요합니다.IValueConverter 및 바인딩 목록의 모든 값을 변환하십시오.
나는이 목적을 위해 IValueConverter를 사용하는데, Path.GetFileName 속성을 사용하면 파일 이름의 전체 경로를 변경할 수 있습니다. 바인딩은 정확하지만 바인딩 목록에서 값을 변경하지 않습니다. 아래에 IValueConverter 코드를 붙여 넣습니다. 이 코드의 문제점을 알려주십시오. 나는 here 변환을 참조했다.
[ValueConversion(typeof(string), typeof(string))]
public class pathtoname : IValueConverter
{
public object Convert(object value, Type targetType, object parameter ,CultureInfo culture)
{
BindingList<string> ls = value as BindingList<string>;
ls.Select(x => "WW");
return ls;//all values should be WW. But they are not.(debugger)
}
public object ConvertBack(object value, Type targetType, object parameter,CultureInfo culture)
{
return null;
}
}
편집 : 값이 지금 변환됩니다. 하지만 이제 전체 경로를 다시 가져 오는 방법은 무엇입니까? 2 개의 목록을 보관해야합니까? 하나는 전체 경로이고 다른 하나는 here과 같은 이름입니다. 더 나은 해결책이 있습니까?
확인. 효과가있었습니다. 하지만 지금 다른 문제가 생겼어. 내 로딩 파일이 전체 경로를 잃었습니다. 전체 경로를 유지하면서 파일 이름 만 표시하는 방법에 대한 팁 – Naresh
파일 이름을 얻으려면 Path 정적 클래스에서 GetFileName 메서드를 살펴보십시오. http://msdn.microsoft.com/en-us/library/system.io.path.getfilename.aspx –
아, 저도 압니다. . 파일 이름에서 다른 기능을 통해 파일을 전달할 수 있도록 전체 경로로 이동하려고합니다. 그러나 변환기는 정보를 잃어 버렸다. – Naresh