为样式通用 Windows 应用程序配置视觉状态设置器
Configuring Visual State Setters for a Style Universal Windows App
我有一个 UWP 应用程序,我在其中为不同页面中使用的按钮和文本块创建了各种样式。我曾假设我将能够在样式本身上应用 Visual State setter。但是,Visual State 中的setter 似乎只能直接应用于特定的控件。有什么方法可以将视觉状态应用于样式元素。我的页面中有 60 个文本块,它们都具有特定的字体大小。我是否必须为这些控件中的每个控件指定不同的字体大小才能使用 Visual State,或者是否有更简单的方法来做到这一点。
提前致谢。
我认为你应该采取不同的方法:将 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;
}
}
我有一个 UWP 应用程序,我在其中为不同页面中使用的按钮和文本块创建了各种样式。我曾假设我将能够在样式本身上应用 Visual State setter。但是,Visual State 中的setter 似乎只能直接应用于特定的控件。有什么方法可以将视觉状态应用于样式元素。我的页面中有 60 个文本块,它们都具有特定的字体大小。我是否必须为这些控件中的每个控件指定不同的字体大小才能使用 Visual State,或者是否有更简单的方法来做到这一点。
提前致谢。
我认为你应该采取不同的方法:将 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;
}
}