如何使用 Setters 在 XAML 中设置默认样式?
How do I set a default style in XAML with Setters?
通过 VisualState Setter,如何将控件恢复为其默认样式?
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value="{x:Null}"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
我尝试使用 null,但没有用(实际上被忽略了)。我该怎么做?
您可以为控件指定一个空样式(有点 hack...):
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style">
<Setter.Value>
<Style TargetType="FlipView"/>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
但我建议你做相反的事情,只在你想要的状态下设置样式,而不是在你不需要的状态下清除样式。
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="[AllKnown]"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value="[What you usually want]"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
..
..
<FlipView .... /> <!-- do not set style here ->
这样,当 [AllKnown] 设备类型未激活时,视觉状态管理器会清除样式。
要将任何 VisualState setter 重置为 默认值,请使用空字符串。
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value=""/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
使用默认值,我的意思是在您的 XAML 代码中设置的样式:
<FlipView x:Name="flip" Text="Test" />
此处您的 VisualState 将恢复为默认的内置 Windows 样式。
<FlipView x:Name="flip" Style="{StaticResource MyGreenStyle}" Text="Test" />
在这里,您的 VisualState 将恢复用于 MyGreenStyle
的任何其他样式。
通过 VisualState Setter,如何将控件恢复为其默认样式?
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value="{x:Null}"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
我尝试使用 null,但没有用(实际上被忽略了)。我该怎么做?
您可以为控件指定一个空样式(有点 hack...):
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style">
<Setter.Value>
<Style TargetType="FlipView"/>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
但我建议你做相反的事情,只在你想要的状态下设置样式,而不是在你不需要的状态下清除样式。
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="[AllKnown]"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value="[What you usually want]"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
..
..
<FlipView .... /> <!-- do not set style here ->
这样,当 [AllKnown] 设备类型未激活时,视觉状态管理器会清除样式。
要将任何 VisualState setter 重置为 默认值,请使用空字符串。
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<pbixaml:DeviceTypeTrigger DeviceType="Other"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="flip.Style" Value=""/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
使用默认值,我的意思是在您的 XAML 代码中设置的样式:
<FlipView x:Name="flip" Text="Test" />
此处您的 VisualState 将恢复为默认的内置 Windows 样式。
<FlipView x:Name="flip" Style="{StaticResource MyGreenStyle}" Text="Test" />
在这里,您的 VisualState 将恢复用于 MyGreenStyle
的任何其他样式。