我想根据字符串的长度在textblock中显示正确的字体大小的字符串,所以我想可能通过计算字符串长度或字符然后更新我的字体大小,但我不知道如何在代码中执行此操作。 ...
答案 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重新使用逻辑。