WPF VisualStateManager 更改子属性
WPF VisualStateManager Changing Child Properties
我有一个 ScrollViewer,其中包含一些嵌套的子元素,如下所示:
<ScrollViewer x:Name="MainScrollViewer"...>
<Grid ...>
<TextBlock ... FontSize="20" ...>
<StackPanel ...>
<TextBlock ... FontSize="15" ...>
...
<TextBlock ... FontSize="15" ...>
</StackPanel ...>
</Grid>
</ScrollViewer>
大多数 TextBlock 都在控件中明确设置了 FontSize。
我正在编写一个 Windows 通用应用程序,因此我使用视觉状态管理器来处理不同的 window 大小。我需要为其中一种视觉状态更改 MainScrollViewer 中所有子元素的字体大小。
我尝试使用设置器之一为特定视觉状态设置 FontSize:
<Setter Target="MainScrollViewer.FontSize" Value="10">
这似乎没有效果,因为它没有覆盖值。 如何使用 VSM 覆盖子元素的所有字体大小 Setter?
如果没有更好的解决方案,您可以采用一个 TextBlock
作为字体大小母版,并将所有其他 TextBlocks 绑定到该母版。这样做你只需要在VSM中设置master的字体大小即可。
<TextBlock x:Name="FonSizeMaster" FontSize="20" ... />
<TextBlock FontSize="{Binding FontSize, ElementName=FonSizeMaster}" .../>
MSDN 有一个很好的 VSM 示例
管理状态和控件状态之间转换的逻辑。
https://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager(v=vs.110).aspx
由于 FontSize 是附加的 属性,因此以下内容也应该有效(未测试):
<ScrollViewer x:Name="MainScrollViewer" TextElement.FontSize="20" ...>
<Grid ...>
<TextBlock ... >
<StackPanel ...>
<TextBlock ... >
...
<TextBlock ... >
</StackPanel ...>
</Grid>
</ScrollViewer>
VSM:
<Setter TargetName="MainScrollViewer" Property="TextElement.FontSize" Value="10">
我有一个 ScrollViewer,其中包含一些嵌套的子元素,如下所示:
<ScrollViewer x:Name="MainScrollViewer"...>
<Grid ...>
<TextBlock ... FontSize="20" ...>
<StackPanel ...>
<TextBlock ... FontSize="15" ...>
...
<TextBlock ... FontSize="15" ...>
</StackPanel ...>
</Grid>
</ScrollViewer>
大多数 TextBlock 都在控件中明确设置了 FontSize。
我正在编写一个 Windows 通用应用程序,因此我使用视觉状态管理器来处理不同的 window 大小。我需要为其中一种视觉状态更改 MainScrollViewer 中所有子元素的字体大小。
我尝试使用设置器之一为特定视觉状态设置 FontSize:
<Setter Target="MainScrollViewer.FontSize" Value="10">
这似乎没有效果,因为它没有覆盖值。 如何使用 VSM 覆盖子元素的所有字体大小 Setter?
如果没有更好的解决方案,您可以采用一个 TextBlock
作为字体大小母版,并将所有其他 TextBlocks 绑定到该母版。这样做你只需要在VSM中设置master的字体大小即可。
<TextBlock x:Name="FonSizeMaster" FontSize="20" ... />
<TextBlock FontSize="{Binding FontSize, ElementName=FonSizeMaster}" .../>
MSDN 有一个很好的 VSM 示例
管理状态和控件状态之间转换的逻辑。
https://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager(v=vs.110).aspx
由于 FontSize 是附加的 属性,因此以下内容也应该有效(未测试):
<ScrollViewer x:Name="MainScrollViewer" TextElement.FontSize="20" ...>
<Grid ...>
<TextBlock ... >
<StackPanel ...>
<TextBlock ... >
...
<TextBlock ... >
</StackPanel ...>
</Grid>
</ScrollViewer>
VSM:
<Setter TargetName="MainScrollViewer" Property="TextElement.FontSize" Value="10">