天天看點

windows phone (22) 隐藏元素

<a target="_blank" href="http://msdn.microsoft.com/zh-cn/library/system.windows.uielement.visibility%28v=vs.95%29.aspx">Visibility</a>

此屬性能非常友善的實作隐藏某個元素,但是visibility屬性不是boolean類型,他是visibility類型,并包含兩個visible和collapsed兩個成員的枚舉類型:

其中預設狀态下是visible即顯示,當設定為collapsed時,元素大小就會變成0,并且當設定為collapsed是,該屬性所屬的元素不參與事件,并且不能獲得焦點,不能獲得焦點也就不能進行命中測試

xaml代碼:

&lt;!--ContentPanel - 在此處放置其他内容--&gt;

        &lt;Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"

              &gt;

            &lt;TextBlock x:Name="tb1" Text="tb1顯示" VerticalAlignment="Center" HorizontalAlignment="Center"&gt;&lt;/TextBlock&gt;

            &lt;TextBlock x:Name="tb2" Text="tb2顯示"  Visibility="Collapsed" VerticalAlignment="Center" &gt;&lt;/TextBlock&gt;

        &lt;/Grid&gt;

 加Visibility="Collapsed"前

windows phone (22) 隐藏元素

加入visibility=“Collapsed”之後

windows phone (22) 隐藏元素

但是要注意的是,如果在布局過程中用到此屬性,把某個元素的大小給變成0之後,可能會影響這個布局;

Opactity

沒錯,就是這個屬性,在沒看到這個屬性前,我都沒想到會是這個屬性,不過仔細想想也是,當Opactity=“0”的時候,就把元素的透明度設定為最暗就看不到了,不過該元素還是實實在在的存在的,是以使用此屬性适合在不影響布局的情況,而且元素也不會消失

 xaml代碼:

&lt;Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"

            &lt;TextBlock x:Name="tb2" Text="tb2顯示"  Opacity="0" VerticalAlignment="Center" ManipulationDelta="tb2_ManipulationDelta" &gt;&lt;/TextBlock&gt;

 運作後的效果:

windows phone (22) 隐藏元素

和上一張圖檔一樣,從代碼中可以看到我們定義了一個觸摸移動事件,看看會不會實作,隐藏檔案代碼比較簡單,如下:

   private void tb2_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)

        {

            this.PageTitle.Text = "依然相應事件";

        }

 效果:

windows phone (22) 隐藏元素

就像上面的一句話,依然響應事件(貌似寫這個事件測試是廢話:))

 好了,加上這句話就好了,加個屬性IsHitTestVisible="False",這樣就不會響應使用者的觸摸操作了;

windows phone (22) 隐藏元素

 在用作布局中,opacity屬性沒有visibility屬性搞笑,如果需要用到頻繁的布局嵌套,盡量避免opacity,如果在grid等元素中使用以上兩個屬性,那麼gird中所包含的元素也會應用這兩個屬性;

如果在面闆中應用rendertransform屬性,那麼面闆中的子元素也會受到影響,但是如果在子面闆中設定rendertransform 屬性,那麼父面闆會忽略子面闆變換的效果;

繼續閱讀