Elide Text


1

Ich habe ein Label mit einem vom Benutzer gewählten Verzeichnispfad. Natürlich sind manche Wege länger als andere. Ich benutze eine Resizer auf dem Steuerelement, in dem das Label lebt, und würde es lieben, wenn ich variable Eliding des Pfades haben könnte.

c: \ sehr \ lang \ Pfad \ a \ filename.txt \-c kollabiert: ... \ filename.txt oder c: \ sehr ... \ filename.txt. Sie erhalten das Bild - größeres Fenster gibt mehr Informationen, verkleinert es und Sie erhalten immer noch die wichtigen Teile des Pfades. Ich würde es lieben, wenn ich keine benutzerdefinierte Kontrolle hätte, aber ich kann damit leben.

Custom Text Wrapping in WPF scheint, wie es die Arbeit tun könnte, aber ich hoffe auf etwas einfacheres.

EDIT Sorry, ich wollte vermitteln, dass ich die Eliding basierend auf der Breite des Labels variieren soll.

1

Dieses Beispiel, das Sie angegeben haben, ist für nicht rechteckige Behälter. Wenn Sie das nicht benötigen, können Sie einen Wertkonverter verwenden. Wenn es größer als das Etikett, Sie Ellipsen setzen:

Nicht getestet Beispiel:

class EllipsisConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, 
Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    string path = (string)value; 

if (path.Length > 100) 
{ 
return path.Substring(0, 100) + "..."; 
}else{ 
    return path; 
} 
    } 

    public object ConvertBack(object value, 
Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
}