2008-09-23 9 views
1

J'ai une étiquette avec un chemin de répertoire sélectionné par l'utilisateur. Bien sûr, certains chemins sont plus longs que d'autres. J'utilise un Resizer sur le contrôle dans lequel le Label vit, et je l'adorerais si je pouvais avoir une variable variable du chemin.Elide Text

c: \ très \ longtemps \ chemin \ \ a \ filename.txt effondrement de c: ... \ filename.txt ou c: \ très ... \ filename.txt. Vous obtenez l'image - une plus grande fenêtre donne plus d'informations, la rétrécit et vous obtenez toujours les parties importantes du chemin. J'adorerais que je n'aie pas besoin d'avoir un contrôle personnalisé, mais je peux vivre avec.

Custom Text Wrapping in WPF semble qu'il pourrait faire le travail, mais j'espère quelque chose de plus simple. Désolé, je voulais dire que je veux que le choix varie en fonction de la largeur de l'Étiquette.

Répondre

1

Cet exemple que vous avez donné concerne les conteneurs non rectangulaires. Si vous n'en avez pas besoin, vous pouvez utiliser un convertisseur de valeur. Si ses plus gros que l'étiquette, vous mettez: ellipses

Non testé exemple:

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 
}