In the XAML code below, I have multiple VisualStates. Each VisualState has an AdaptiveTrigger that searches for a minimum window width. My goal is to have the StackPanel's FontSize increase as the window size increases.
I've tried this by setting the VisualState.Setter as follows: Target="stackPanel.FontSize" Value="20"/> or Value="30" or Value="40", depending on the size of the window. This would occur whenever the AdaptiveTrigger.MinWindowWidth value is met. But this does not work as I had hoped.
Here is my sample code:
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="LargeScreen">
<VisualState.StateTriggers>
<!--Increase FontSize to 40 when window width is >=1000 effective pixels.-->
<AdaptiveTrigger MinWindowWidth="1000"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="stackPanel.FontSize" Value="40"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="MediumScreen">
<VisualState.StateTriggers>
<!--Increase FontSize to 30 when window width >=720 effective pixels.-->
<AdaptiveTrigger MinWindowWidth="720"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="stackPanel.FontSize" Value="30"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="SmallScreen">
<VisualState.StateTriggers>
<!--Increase FontSize to 20 when window width >=200 effective pixels.-->
<AdaptiveTrigger MinWindowWidth="200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="stackPanel.FontSize" Value="20"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel x:Name="stackPanel" Orientation="Vertical" >
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="10" />
</Style>
</StackPanel.Resources>
<TextBlock Text="Sample text line 1." />
<TextBlock Text="Sample text line 2." />
</StackPanel>
</Grid>
Interestingly, and as an entirely separate note, if you change the setter from this this:
<VisualState.Setters>
<Setter Target="stackPanel.FontSize" Value="20"/>
</VisualState.Setters>
To this:
<VisualState.Setters>
<Setter Target="stackPanel.Orientation" Value="Horizontal"/>
</VisualState.Setters>
Then the StackPanel's orientation is changed to Horizontal whenever the AdaptiveTrigger.MinWindowWidth value is met. I'm not sure what is different between stackPanel.Orientation and stackPanel.FontSize, but one clearly works in this context, and the other does not.