在下面的 XAML 代碼中,我有多個 VisualStates。每個 VisualState 都有一個用于搜索最小視窗寬度的 AdaptiveTrigger。我的目標是讓 StackPanel 的 FontSize 隨著視窗大小的增加而增加。
VisualState.Setter我已經通過如下設定來嘗試這個:Target="stackPanel.FontSize" Value="20"/>或Value="30"或Value="40",取決于視窗的大小。只要滿足該AdaptiveTrigger.MinWindowWidth值,就會發生這種情況。但這并不像我希望的那樣作業。
這是我的示例代碼:
<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>
有趣的是,作為一個完全獨立的注釋,如果您從這里更改設定器:
<VisualState.Setters>
<Setter Target="stackPanel.FontSize" Value="20"/>
</VisualState.Setters>
對此:
<VisualState.Setters>
<Setter Target="stackPanel.Orientation" Value="Horizontal"/>
</VisualState.Setters>
然后,只要滿足該AdaptiveTrigger.MinWindowWidth值,StackPanel 的方向就會更改為水平。我不確定 and 之間有什么不同stackPanel.Orientation,stackPanel.FontSize但一個顯然在這種情況下有效,而另一個則沒有。
uj5u.com熱心網友回復:
StackPanel 類沒有呼叫任何屬性FontSize,并且 StackPanel 類確實包含一個屬性。這就是為什么作業但失敗了。OrientationstackPanel.OrientationstackPanel.FontSize
如果你想改變 的大小TextBlock,你需要呼叫TextBlock.FontSize. 例如:
<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="TextBlockOne.FontSize" Value="40"/>
</VisualState.Setters>
</VisualState>
<TextBlock x:Name="TextBlockOne" Text="Sample text line 1." />
更新:
您可以將其他 TextBlocks 的 FontSize 屬性系結到TextBlockOne. 所以當 FontSize 屬性發生TextBlockOne變化時,其他 TextBlocks 也會發生變化。
像這樣:
<TextBlock x:Name="TextBlockOne" Text="Sample text line 1." />
<TextBlock Text="Sample text line 2." FontSize="{Binding FontSize, ElementName=TextBlockOne,Mode=TwoWay}" />
<TextBlock Text="Sample text line 3." FontSize="{Binding FontSize, ElementName=TextBlockOne,Mode=TwoWay}" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515954.html
