在wp中我們也會用到隱藏某個元素,已達到某種效果,剛剛從文章看到了,分享一下【作者:神舟龍】
Visibility
此屬效能非常方便的實現隱藏某個元素,但是visibility屬性不是boolean類型,他是visibility類型,並包含兩個visible和collapsed兩個成員的枚舉類型:
其中預設狀態下是visible即顯示,當設定為collapsed時,元素大小就會變成0,並且當設定為collapsed是,該屬性所屬的元素不參與事件,並且不能獲得焦點,不能獲得焦點也就不能進行點擊測試
xaml代碼:
代碼如下 |
複製代碼 |
<!--ContentPanel - 在此處放置其他內容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"
>
<TextBlock x:Name="tb1" Text="tb1顯示" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
<TextBlock x:Name="tb2" Text="tb2顯示" Visibility="Collapsed" VerticalAlignment="Center" ></TextBlock>
</Grid>
|
加Visibility="Collapsed"前
加入visibility=“Collapsed”之後
但是要注意的是,如果在版面配置階段中用到此屬性,把某個元素的大小給變成0之後,可能會影響這個布局;
Opactity
沒錯,就是這個屬性,在沒看到這個屬性前,我都沒想到會是這個屬性,不過仔細想想也是,當Opactity=“0”的時候,就把元素的透明度設定為最暗就看不到了,不過該元素還是實實在在的存在的,所以使用此屬性適合在不影響布局的情況,而且元素也不會消失
xaml代碼:
代碼如下 |
複製代碼 |
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"
>
<TextBlock x:Name="tb1" Text="tb1顯示" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
<TextBlock x:Name="tb2" Text="tb2顯示" Opacity="0" VerticalAlignment="Center" ManipulationDelta="tb2_ManipulationDelta" ></TextBlock>
</Grid>
|
運行後的效果:
和上一張圖片一樣,從代碼中可以看到我們定義了一個觸摸移動事件,看看會不會實現,隱藏檔案代碼比較簡單,如下:
代碼如下 |
複製代碼 |
private void tb2_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
this.PageTitle.Text = "依然相應事件";
}
|
效果:
就像上面的一句話,依然響應事件(貌似寫這個事件測試是廢話:))
好了,加上這句話就好了,加個屬性IsHitTestVisible="False",這樣就不會響應使用者的觸摸操作了;
在用作布局中,opacity屬性沒有visibility屬性搞笑,如果需要用到頻繁的布局嵌套,盡量避免opacity,如果在grid等元素中使用以上兩個屬性,那麼gird中所包含的元素也會應用這兩個屬性;
如果在面板中應用rendertransform屬性,那麼面板中的子項目也會受到影響,但是如果在子面板中設定rendertransform 屬性,那麼父面板會忽略子面板變換的效果;