posts - 241,  comments - 116,  trackbacks - 0

          Silverlight2整整一年了,上個星期公司全面轉去Silverlight3,作為紀念就把用SL2寫的最后一個東西發(fā)出來吧。效果如下:

          獲取 Microsoft Silverlight
          只 是一個很簡單的程序,甚至懶得寫到Generic.xaml中,直接使用UserControl。而用ListBox做也是為了圖方便,ListBox中 GetContainerForItemOverride()方法能很方便地將Object轉換成DependencyObject.不必要修改 ListBox,只需要給它一個樣式即可.


           1        <Style TargetType="ListBox" x:Key="ListBoxStyle">
           2            <Setter Property="Template">
           3                <Setter.Value>
           4                    <ControlTemplate TargetType="ListBox">
           5                        <Border Loaded="OnBorderLoaded">
           6                            <Border.Resources>
           7                                <Storyboard x:Key="StoryBoardCenter" Duration="0:0:0.5">
           8                                    <DoubleAnimationUsingKeyFrames  Duration="0:0:0.5" Storyboard.TargetName="ItemsPresenter" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)">
           9                                        <SplineDoubleKeyFrame  KeySpline="0.1,0.6,0.6,1"  Value="1"/>
          10                                    </DoubleAnimationUsingKeyFrames>
          11                                </Storyboard>
          12                            </Border.Resources>
          13                            <ScrollViewer x:Name="ScrollViewer" Padding="0" 
          14                                              HorizontalScrollBarVisibility="Hidden"
          15                                              VerticalScrollBarVisibility="Hidden"
          16                          BorderThickness="0">
          17                                <ItemsPresenter x:Name="ItemsPresenter">
          18                                    <ItemsPresenter.RenderTransform>
          19                                        <TransformGroup>
          20                                            <TranslateTransform  X="0"/>
          21                                        </TransformGroup>
          22                                    </ItemsPresenter.RenderTransform>
          23                                </ItemsPresenter>
          24                            </ScrollViewer>
          25                        </Border>
          26                    </ControlTemplate>
          27                </Setter.Value>
          28            </Setter>
          29            <Setter Property="ItemsPanel">
          30                <Setter.Value>
          31                    <ItemsPanelTemplate>
          32                        <StackPanel Orientation="Horizontal"/>
          33                    </ItemsPanelTemplate>
          34                </Setter.Value>
          35            </Setter>
          36        </Style>
          37
          38
          39
          40     <Style TargetType="ListBoxItem" x:Key="ListBoxItemStyle">
          41            <Setter Property="Template">
          42                <Setter.Value>
          43                    <ControlTemplate TargetType="ListBoxItem">
          44                        <Grid  Loaded="OnGridLoaded">
          45                            <Border  >
          46                                <Grid>
          47                                    <ContentPresenter    x:Name="contentPresenter"
          48            Content="{TemplateBinding Content}"
          49            ContentTemplate="{TemplateBinding ContentTemplate}"
          50           />
          51
          52
          53                                </Grid>
          54                            </Border>
          55                        </Grid>
          56
          57                    </ControlTemplate>
          58                </Setter.Value>
          59            </Setter>
          60        </Style>

          之後只要想方法觸發(fā)StoryBoardCenter這個StoryBoard了,當然還需要修改它的Value,代碼就不貼出了,下面有下載(動畫效果寫得比較簡單,見笑了)。
          完成後的調用方法比較簡單:


          1    <Grid x:Name="LayoutRoot">
          2        <local:SliderControl   x:Name="sliderControl">
          3            <local:SliderControl.ItemTemplate>
          4                <DataTemplate>
          5                    <Image Source="{Binding Source}"  Stretch="UniformToFill"/>
          6                </DataTemplate>
          7            </local:SliderControl.ItemTemplate>
          8        </local:SliderControl>
          9    </Grid>

           1  public MainPage()
           2        {
           3            InitializeComponent();
           4
           5            List<AdObject> list = new List<AdObject>();
           6            AdObject obj = new AdObject { Source = "http://www.asp.net/AJAX/AjaxControlToolkit/Samples/SlideShow/images/Water%20lilies.jpg" };
           7            list.Add(obj);
           8             obj = new AdObject { Source = "http://www.asp.net/AJAX/AjaxControlToolkit/Samples/SlideShow/images/Sunset.jpg" };
           9            list.Add(obj);
          10             obj = new AdObject { Source = "http://www.asp.net/AJAX/AjaxControlToolkit/Samples/SlideShow/images/Winter.jpg" };
          11            list.Add(obj);
          12             obj = new AdObject { Source = "http://www.asp.net/AJAX/AjaxControlToolkit/Samples/SlideShow/images/Blue%20hills.jpg" };
          13            list.Add(obj);
          14            sliderControl.ItemsSource = list;
          15        }
          posted on 2009-08-27 09:35 墻頭草 閱讀(1402) 評論(2)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          人人游戲網 軟件開發(fā)網 貨運專家
          主站蜘蛛池模板: 三原县| 洛浦县| 繁峙县| 丰宁| 高邮市| 白水县| 和硕县| 大兴区| 舒城县| 灵石县| 卢龙县| 高尔夫| 钟山县| 诸城市| 灯塔市| 萨嘎县| 克山县| 清镇市| 宁海县| 楚雄市| 无锡市| 榆林市| 庐江县| 克拉玛依市| 军事| 随州市| 历史| 新巴尔虎左旗| 富阳市| 义马市| 小金县| 拉孜县| 灯塔市| 杨浦区| 常山县| 呼和浩特市| 会昌县| 富锦市| 新巴尔虎右旗| 郸城县| 丽水市|