2015-11-18 63 views
3

通過VisualState Setter,我如何將控件恢復爲其默認樣式?如何使用Setters在XAML中設置默認樣式?

 <VisualStateGroup> 
      <VisualState> 
       <VisualState.StateTriggers> 
        <pbixaml:DeviceTypeTrigger DeviceType="Other"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="flip.Style" Value="{x:Null}"/> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 

我試過使用null,但沒有奏效(實際上被忽略了)。我怎麼做?

回答

1

要將任何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的任何其他樣式。

3

您可以指定一個空的風格,以控制(一種黑客的...):

<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]設備類型不活動時,風格由可視狀態管理器清除。

+0

謝謝。我認爲空弦效果很好。 –

相關問題