计数字符串字符mvvm

时间:2014-03-19 04:41:39

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

我想根据字符串的长度在textblock中显示正确的字体大小的字符串,所以我想可能通过计算字符串长度或字符然后更新我的字体大小,但我不知道如何在代码中执行此操作。 ...

2 个答案:

答案 0 :(得分:1)

    <Style x:Key="ApplicationNameStyle" TargetType="TextBlock">
         <Setter Property="FontSize" Value="{Binding FontSize,Mode=TwoWay, Source={StaticResource Sampe}}"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="Margin" Value="0,2,0,0"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="Effect">
            <Setter.Value>
                <DropShadowEffect BlurRadius="10" Opacity="0.25" ShadowDepth="0"/>
            </Setter.Value>
        </Setter>
    </Style>

Viewmodel.cs

public Double FontSize
{
    get
    {
         return _fontSize;
    }
    set
    {
        _fontSize = value;
        put your logic!
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs("FontSize"));
    }
}

答案 1 :(得分:1)

你也可以像这样使用Converter

public class TextFontSizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        int size;
        //value is MyText
        //Your logic to calculate the font size;
        ...
        return size;
    }

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

在视图中,在资源部分声明转换器:

<local:TextFontSizeConverter x:Key="Converter"/>

然后,将其绑定到TextBlock

<TextBlock Text="{Binding MyText, Mode=TwoWay}" FontSize="{Binding MyText, Mode=TwoWay, Converter={StaticResource Converter}}" />

使用此解决方案,您始终可以使用任何TextBlock重新使用逻辑。