在textblock-windows phone 8中获取行数

时间:2016-06-02 12:00:07

标签: c# wpf windows xaml windows-phone-8

我在数据模板中有文本块,其中我通过绑定显示数据。最初我需要在textblock中显示最多三行的数据。如需更多数据,请查看更多选项点按,以扩展文本块

这件事已经完成了。我面临的主要问题是如果数据大小不超过三行,我不必再看看更多选项

如何知道我的数据只消耗1或2行文本块

提前致谢

1 个答案:

答案 0 :(得分:0)

考虑您已将视图模型绑定到模板

public class ViewModel : INotifyPropertyChanged
{
     public string MyBoundText { get { .. }; set { .. }; }
]

您可以创建另一个属性:

public int LinesNo => this.MyBoundText.Split('\n').Length; 
//remember about null-check and other edge-cases

我假设你的xaml在某个地方:

<TextBox Text="{Binding MyBoundText}"></TextBox>

所以,创建自己的转换器:

class Button1VisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targettype, object parameter, System.Globalization.CultureInfo culture)
    {
        int mode = (int)value;
        if (mode <= (int)parameter)
            return System.Windows.Visibility.Collapsed;
        else
            return System.Windows.Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

然后用你的按钮绑定它:

<Button Content="Show more...">
    <Button.Visibillity>
        <Binding Path="LinesNo "
                 Converter="{StaticResource Button1VisibilityConverter }">
            <Binding.ConverterParameter>
                <sys:Int32>3</sys:Int32>
            </Binding.ConverterParameter>
        </Binding>
    </Button.Visibillity>
</Button>

(请记住以前将转换器置为静态resoruce。)

警告:未经测试,只是想法/提示。