xaml - 关于 UWP 中复制模板创建的 Xaml Visualstate 的几个问题
问题描述
我对 UWP 中复制的模板创建的视觉状态几乎没有疑问。
我只是制作 NavigationView,以下是它的源代码。
<NavigationView Style="{StaticResource NavigationViewStyle1}"
x:Name="navigationView"
SelectedItem="{x:Bind ViewModel.Selected, Mode=OneWay}"
Header="{x:Bind ViewModel.Selected.Content, Mode=OneWay}"
IsSettingsVisible="False"
Background="{ThemeResource SystemControlBackgroundAltHighBrush}"> ..omitted
我右键单击NavigationView
设计视图,然后单击编辑模板并单击编辑副本(不确定它的名称,因为我的视觉工作室以韩语显示)。
如您所知,它创建了设计字典。我试图通过编辑其中的某些部分来熟悉这一点。然后,我想知道为什么TogglePaneButtonCollapsed
visualstate 组存在。我会举一个例子来帮助你理解。
首先,我认为我应该编写 XAML 代码。我对 TogglePaneGroup 的 TogglePaneButtonCollapsed VisualState 感兴趣。
<Style x:Key="NavigationViewStyle1" TargetType="NavigationView">
<Setter Property="PaneToggleButtonStyle"
Value="{StaticResource PaneToggleButtonStyle}"/>
<Setter Property="IsTabStop"
Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="NavigationView">
<Grid x:Name="RootGrid">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="DisplayModeGroup">
<VisualState x:Name="Compact"/>
<VisualState x:Name="Expanded">
<VisualState.Setters>
<Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/> <!-- I added-->
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Minimal">
<VisualState.Setters>
<Setter Target="HeaderContent.Margin" Value="48,5,0,0"/>
<Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/> <!-- I added-->
</VisualState.Setters>
</VisualState>
<VisualState x:Name="MinimalWithBackButton">
<VisualState.Setters>
<Setter Target="HeaderContent.Margin" Value="104,5,0,0"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="TogglePaneGroup">
<VisualState x:Name="TogglePaneButtonVisible">
<VisualState.Setters>
<Setter Target="PaneContentGridToggleButtonRow.Height" Value="200"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TogglePaneButtonCollapsed">
<VisualState.Setters>
<Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/>
<Setter Target="PaneContentGridToggleButtonRow.Height" Value="2000"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup> .. omitted
我想知道什么时候TogglePaneButtonCollapsed
工作。我使应用程序的窗口大小越来越大,但没有一个触发器设置器TogglePaneButtonCollapsed
(“make Toggle ButtonRow.Height == 2000”)。我添加了一些代码以Expaned
使TogglePaneButton Visibility Collapsed。但它只有 200 px 高度,正如它在. 不是 2000 像素高度。Minimal
DisplayModegroup
TogglePaneButtonVisible
据我所知,这个字典文件中没有 VisualState Trigger,VisualState Trigger 代码对开发人员隐藏,对吗?...开发人员应遵守 Visualstate Group 和 VisualState 的名称。
那么最后一个问题是,为什么存在TogglePaneButtonCollapsed
视觉状态,以及如何在没有定义视觉状态触发器的情况下使用它?我可以超载触发器吗?感谢您阅读我的帖子。
解决方案
此字典文件中没有 VisualState Trigger,VisualState Trigger 代码对开发人员隐藏,对吗?...开发人员应遵守 Visualstate Group 和 VisualState 的名称。
是的。默认的视觉状态是由它自己控制的(你可以把它想象成它的代码隐藏,但是由于 UWP 不是开源的,所以你看不到它)。您不能更改其名称或删除这些默认视觉状态。
为什么存在 TogglePaneButtonCollapsed 视觉状态,以及如何在不定义视觉状态触发器的情况下使用它?我可以超载触发器吗?感谢您阅读我的帖子。
这是设计使然。您可以使用VisualStateManager.GoToState(Control, String, Boolean) 方法在两种状态之间转换控件。
推荐阅读
- r - 如何为每个条制作具有定义的水平边框的堆叠条形图
- wordpress - WordPress Gutenberg 编辑器更改了我手动添加的 HTML,从而破坏了 WP Featherlight 画廊功能
- javascript - 如何正确排序这个哈希图数组
- c - 将值放入链表(c 编程)
- python - 使用 Pandas 在数据框中组合两行的不同部分
- javascript - 检查变量是否为空,然后在 javascript / jQuery 中将长度设置为默认值 0
- r - 在 plot_PCA(R - Momocs)中更改轴限制的方法?
- javascript - 在asp.net中使用ajax,jquery在回发后保留多个选择下拉值
- go - gqlgen 从解析器设置 cookie
- html - 我将如何在横幅上设置这三个图像的样式,以便它们在保持响应性的同时水平显示?