为样式通用Windows应用程序配置可视状态设置器

时间:2016-04-28 21:37:39

标签: win-universal-app uwp-xaml

我有一个UWP应用程序,我为不同页面中使用的按钮和文本块创建了各种样式。我曾假设我可以在样式本身上应用Visual State setter。但是,似乎Visual State中的setter只能直接应用于特定控件。有没有办法将Visual State应用于Style元素。我的页面中有60个文本块,它们都具有特定的字体大小。我是否必须为这些控件的每个人指定不同的字体大小才能使用Visual State,或者有更简单的方法来执行此操作。

提前感谢。

1 个答案:

答案 0 :(得分:0)

我认为你应采取不同的方法:将60 TextBlock的字体大小绑定到属性,并在代码后面触发条件时更新+通知它。

在XAML中

<TextBlock FontSize={"Binding MyFontSize"}/>
<!-- 60 of your textblock here ...... -->

在ViewModel中,我使用MVVM Light来通知属性更改事件:

private double _MyFontSize = null;

    public double MyFontSize
    {
        get
        {
            return _MyFontSize;
        }
        set
        {
            Set(ref _MyFontSize, value);
        }
    }

在你的代码背后: 在构造函数中:

this.SizeChanged += LoginPanel_SizeChanged;

private void LoginPanel_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        if(e.NewSize.Width >= 600)
        {
            (this.DataContext as MyViewModel).MyFontSize = 20;
        }
        else
        {
            (this.DataContext as MyViewModel).MyFontSize = 16;
        }
    }