【Win 10應用開發】AdaptiveTrigger在自定義控件中是可以觸發的


前些天,看到有網友給我留言,說AdaptiveTrigger在自定義控件(模板化控件)中不能觸發。因為當時我正在寫其他的代碼,就沒有去做實驗來驗證,於是我就給這位網友提了使用GotoVisualState的方法來自己切換狀態。

今天有空,我就做了做測試,發現AdaptiveTrigger觸發器在模板化控件的控件件模板中是可以觸發的。

 

首先,向應用程序項目添加一個新的模板化控件,我叫它為MyControl。如下圖。

 

然后打開Generic.xaml文件,找到新控件的樣式,將模板修改為:

                <ControlTemplate TargetType="local:MyControl">
                    <Border
                        Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        x:Name="bd">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup>
                                <VisualState>
                                    <VisualState.StateTriggers>
                                        <AdaptiveTrigger MinWindowWidth="700" />
                                    </VisualState.StateTriggers>
                                    <VisualState.Setters>
                                        <Setter Target="bd.Background" Value="Red" />
                                    </VisualState.Setters>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    </Border>
                </ControlTemplate>

 

上面模板中應用了可視化狀態,並且狀態用AdaptiveTrigger來觸發,當應用程序窗口的寬度>= 700時就會觸發,把模板中Border的背景顏色改為紅色。

 

然后打開MainPage,在頁面上聲明一個MyControl實例。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <local:MyControl />
    </Grid>

 

最后,運行應用程序,效果如下。

 

隨后,把窗口的寬度拉大,會看到背景變成了紅色。

 

通過這個試驗,我發現:AdaptiveTrigger觸發器在自定義控件的模板中是可以使用的

 

示例源代碼下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM