【问题标题】:How do I set a default style in XAML with Setters?如何使用 Setter 在 XAML 中设置默认样式?
【发布时间】:2015-11-18 19:11:50
【问题描述】:

如何通过 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,但这不起作用(实际上被忽略了)。我该怎么做?

【问题讨论】:

    标签: xaml windows-10 win-universal-app


    【解决方案1】:

    您可以为控件分配一个空样式(一种 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] 设备类型未激活时,视觉状态管理器会清除样式。

    【讨论】:

      【解决方案2】:

      要将任何 VisualState 设置器重置为 默认 值,请使用空字符串。

          <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 的任何其他样式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 2011-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多