私はこのバインディングを持っています
<TextBlock HorizontalAlignment="Center" Text="{Binding Client.Name}" Grid.Column="1"/>
ここで、文字列バインディングのサイズを制限したいと思いました。例:Client.Nameが50文字の場合、25文字のみを表示したいと思います。
どうすればこれを制限できますか?
値コンバーターを使用してこれを試すことができます。
このようなもの(開発マシンから離れているため、これはメモリからのものであるため、微調整が必要になる場合があります)。
public class StringLengthConverter : IValueConverter
{
public int Length { get; set; }
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return (string)value.SubString(0, this.Length);
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
別の解決策は、必要な長さの文字列をviewModelから直接返すことです。たとえば、30文字の名前のクライアントがある場合、viewModelは最初の25文字を返すことができます。
public class ClientViewModel
{
private string _name;
public string Name
{
get
{
return _name.SubString(0, 25);
// Notify property changed....
}
}
}