明天要去交大講Expression Blend的課,做了一個教程,也整理到博客園分享一下:
本示例的目的是:
- 修改ListBox的模板
- 修改ListBoxItem的視覺狀態
- 添加ListBoxItem視覺狀態之間的過渡
步驟:
1. 添加一個Windows Phone頁面
2. 添加示例數據:
3.通過數據創建ListBox
4.設置,將ListBox調製劇中的位置
5. 編輯模板
6.修改模板的樣式,可以複製以下代碼:
<DataTemplate x:Key="ItemTemplate">
<Grid Height="100" Margin="0,10,0,0" Width="400">
<Image Source="{Binding BackImage}" HorizontalAlignment="Left" Width="400"/>
<Rectangle Fill="#FF131523" HorizontalAlignment="Left" Height="40" Margin="0" Stroke="Black" Width="400" VerticalAlignment="Bottom" StrokeThickness="0" Opacity="0.79" d:LayoutOverrides="VerticalAlignment"/>
</Grid>
</DataTemplate>
7.修改ListBoxItem的樣式,通過以下方式調出ListBoxItem模板進行編輯:
8.修改ListBoxItem的容器爲Grid,這是爲了便於後面做動畫
9.添加2個TextBlock,分別用於顯示兩個綁定字段,注意這裏沒有將這兩個元素定義在前面的ItemTemplate中,是因爲,在ListBox中,ItemTemplate只是作爲ListBoxItem的一個內容控件,所以如果需要處理狀態過渡,則在ListBoxItem的狀態中是找不到這些元素的,這些狀態是由ListBoxItem提供而不是ItemTemplate提供,所以,如果需要處理過渡則不能依賴於ItemTemplate,Blend提供一種方式直接調出ListBoxItem,作爲一個補充,也爲了更好的定製化ListBox
10,但是,這樣就需要手動綁定TextBlock
11.綁定
12.設置兩個文本元素,值看起來如下圖:
13.修改視覺狀態,首先刪除ListBox選中默認的背景變換:
14.變換name元素,使在選中的時候向右滑動:
15.title元素相反向左滑動:
16,修改狀態變換:
19.大功告成