Windows 8 系列(十一):開發小技巧分享

來源:互聯網
上載者:User

臨時記錄、分享一些小的開發技巧:

1. 在資料繫結時,如果資料來源需要被清空:collection.Clear(); 建議在語句後把集合置為null:collection.Clear(); collection=  null;(開發過程中因為沒有置為null而報錯,Windows.UI.Xaml.dll的錯誤)

2. async void 函數與async Task函數不能混為一談。

 async void FUNCTIONNAME1(){ ...  await ...;  Debug.WriteLine("FUNCTIONNAME1 over")};   

   async Task FUNCTIONNAME2(){ ...  await ...;  Debug.WriteLine("FUNCTIONNAME2 over")};

   section1: FUNCTIONNAME1(); Debug.WriteLine("FUNCTIONNAME1");

 section2: await FUNCTIONNAME2(); Debug.WriteLine("FUNCTIONNAME2");

   以上兩段代碼中section1的代碼在執行時會非同步執行,有可能先輸出FUNCTIONNAME1,然後輸出FUNCTIONNAME1 over。第二段代碼則能保證在輸出FUNCTIONNAME2 over後再輸出FUNCTIONNAME2。

3. 你的代碼是不是真的實現了虛擬化?不能單單看你的代碼是不是寫了相關控制項,而需要用VirtualizingStackPanel的CleanUpVirtualizedItemEvent事件來確定是不是真正的實現了虛擬化。我們在gridview的style中修改了樣式,導致上述事件不觸發:

<Style x:Key="PaddingGridViewStyle" TargetType="GridView">        <Setter Property="Padding" Value="0,0,0,10"/>        <Setter Property="IsTabStop" Value="False"/>        <Setter Property="TabNavigation" Value="Once"/>        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled"/>        <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled"/>        <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False"/>        <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled"/>        <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="False"/>        <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/>        <Setter Property="IsSwipeEnabled" Value="True"/>        <Setter Property="ItemContainerTransitions">            <Setter.Value>                <TransitionCollection>                    <AddDeleteThemeTransition/>                    <ContentThemeTransition/>                    <ReorderThemeTransition/>                    <EntranceThemeTransition IsStaggeringEnabled="False"/>                </TransitionCollection>            </Setter.Value>        </Setter>        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="GridView">                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1">                        <ScrollViewer x:Name="ScrollViewer" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"                                       IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}" IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}"                                       IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" TabNavigation="{TemplateBinding TabNavigation}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"                                       ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}">                            <Grid Margin="{TemplateBinding Padding}">                                <ItemsPresenter HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" HeaderTransitions="{TemplateBinding HeaderTransitions}" />                            </Grid>                        </ScrollViewer>                    </Border>                </ControlTemplate>            </Setter.Value>        </Setter>    </Style>

代碼中紅色的部分導致虛擬化被破壞,修改後

<ScrollViewer x:Name="ScrollViewer" ...>     <ItemsPresenter HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" Margin="{TemplateBinding Padding}" HeaderTransitions="{TemplateBinding HeaderTransitions}" /></ScrollViewer>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.