关于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
视觉状态组存在。我将举一个例子来帮助您理解。
首先,我认为我应该编写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
的工作时间。我使App的窗口大小越来越小,但TogglePaneButtonCollapsed
的“它们的触发器设置器”(“使Toggle ButtonRow。Height == 2000”)都没有。我在Expaned
和Minimal
的{{1}}中添加了一些代码,以使TogglePaneButton可见性崩溃。但是它只有DisplayModegroup
中定义的200 px高度。不是2000像素高度。
据我所知,该词典文件中没有VisualState触发器,并且VisualState触发器代码正在向开发人员隐藏,对吗?...,开发人员应遵守Visualstate组和VisualState的名称。
最后一个问题是,为什么TogglePaneButtonVisible
存在视觉状态,以及如何在不定义视觉状态触发器的情况下使用它?我可以使触发器过载吗?感谢您阅读我的帖子。
答案 0 :(得分:1)
此词典文件中没有VisualState触发器,并且VisualState触发器代码正在向开发人员隐藏,对吗?...,开发人员应遵守Visualstate组和VisualState的名称。
是的。默认的视觉状态是由自己控制的(您可以将其视为其隐藏的代码,但是由于UWP不是开源的,因此您看不到它)。您无法更改其名称或删除这些默认的视觉状态。
为什么存在TogglePaneButtonCollapsed可视状态,以及如何在不定义可视状态触发器的情况下使用它?我可以使触发器过载吗?感谢您阅读我的帖子。
这是设计使然。您可以使用VisualStateManager.GoToState(Control, String, Boolean) Method在两个状态之间转换控件。