我需要使用滑块控件
从资源字典中动态更改应用程序字体大小设置我刚刚创建的常用字体大小
<x:Double x:Key="VerseFontSize">30</x:Double>
然后我在文本块中调用了这个样式,就像这样
<Style x:Key="Title_SubText" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Foreground" Value="{StaticResource ForegroundColorBrush}"/>
<Setter Property="FontWeight" Value="Normal"/>
<Setter Property="FontSize" Value="{StaticResource VerseFontSize}"/>
<Setter Property="Margin" Value="0,5"/>
</Style>
现在我想使用滑块控件增大或减小字体大小。
我花了一整天的时间来制作一个解决方案并尝试了很多,但没有任何作用
请帮助我们解决这个问题。
答案 0 :(得分:0)
DynamicResource
在WPF中用于此目的。但它在Windows Phone上不可用。
一个简单的解决方案是以典型的方式绑定到ViewModel。由于您希望此ViewModel可跨页面使用,因此我建议将其放在应用程序资源中。样本类:
public class DynamicResources : ViewModelBase
{
private double verseFontSize;
public double VerseFontSize
{
get { return verseFontSize; }
set
{
verseFontSize = value;
RaisePropertyChanged();
}
}
}
上面的示例使用MVVMLight的ViewModelBase。然后将其添加到App.xaml中的主ResourceDictionary
:
<local:DynamicResources x:Key="Dynamic" VerseFontSize="30"/>
以下列方式绑定它:
FontSize="{Binding VerseFontSize, Source={StaticResource Dynamic}}"
问题是,Windows Phone中的Bindings在Windows Phone上也不可用。您可以尝试执行此处描述的解决方法之一: Silverlight: How to use a binding in setter for a style (or an equivalent work around)
并修改代码隐藏中的值,如下所示:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
DynamicResources resources = (DynamicResources)App.Current.Resources["Dynamic"];
resources.VerseFontSize = resources.VerseFontSize + 1;
}
由于资源是应用程序范围的,所有页面都会更新。