[英]How to change VisualState Setter property via code in C#?
我的UWP應用程序中具有以下VisualState Setter屬性。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="Desktop">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="800" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="DesktopAds.Visibility" Value="Visible" />
<Setter Target="DesktopAds.(Grid.Row)" Value="0" />
<Setter Target="DesktopAds.(Grid.Column)" Value="4" />
<Setter Target="DesktopAds.(Grid.ColumnSpan)" Value="1" />
<Setter Target="MainScrollViewer.(Grid.Row)" Value="0" />
<Setter Target="MainScrollViewer.(Grid.Column)" Value="2" />
<Setter Target="MediaControl.Height" Value="600" />
<Setter Target="MobileAds.Visibility" Value="Collapsed" />
<Setter Target="MainScrollViewer.(Grid.ColumnSpan)" Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Phone">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="DesktopAds.Visibility" Value="Collapsed" />
<Setter Target="MediaControl.Height" Value="400" />
<Setter Target="DesktopAds.(Grid.Row)" Value="1" />
<Setter Target="DesktopAds.(Grid.Column)" Value="0" />
<Setter Target="DesktopAds.(Grid.ColumnSpan)" Value="3" />
<Setter Target="MobileAds.Visibility" Value="Visible" />
<Setter Target="MainScrollViewer.(Grid.Row)" Value="0" />
<Setter Target="MainScrollViewer.(Grid.Column)" Value="0" />
<Setter Target="MainScrollViewer.(Grid.ColumnSpan)" Value="5" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
我想擁有我的應用程序的試用版和付費版,其中試用版帶有廣告,付費版沒有廣告。 我正在使用LicenseInformation.IsTrial屬性來確定該應用程序是試用版還是付費版本,以及何時加載該應用程序,因此我將DesktopAds和MobileAds的可見性折疊了。 但是由於有了AdaptiveTriggers,DesktopAds和MobileAds的可見性已更改為可見,我仍然可以看到廣告。 如何使可見性在我的付費版應用中永久崩潰?
您真正想做的是使用可視狀態組。 像這樣:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="LayoutVisualStateGroup">
<VisualState x:Name="Desktop" />
<VisualState x:Name="Phone" />
</VisualStateGroup>
<VisualStateGroup x:Name="AdvertVisualStateGroup">
<VisualState x:Name="ShowAds" />
<VisualState x:Name="HideAds" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
然后,讓自適應觸發器處理布局,並讓您的代碼隱藏處理隱藏和顯示廣告。 因為您將狀態分為幾組,所以它們是互斥的,可以獨立設置。 有點像如何同時pressed
和enabled
按鈕。 他們與團體一起做。 順便說一下,這是一種非常典型的方法。
祝你好運!
以編程方式更改視覺狀態:
VisualStateManager.GoToState(yourPageHere, "Phone", useTransitions: false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.