自定义全景控制,边缘贴紧

时间:2014-06-27 08:13:23

标签: c# wpf xaml windows-phone-8 panorama-control

我正在尝试为Windows Phone 8创建一个 'PanoramaControl' ,因为它显示了一个场景幻灯片,每个场景的大小都是ScreenWidth。我曾尝试使用微软的全景控制,但出于以下几个原因我放弃了这种方法:

  • 场景数量大约为10-20,而PanoramaControl处理可能太多了,特别是因为里面会有动画。
  • 我不希望控件连续循环,而PanoramaControl会这样做。

经过一番研究后,我决定使用ScrollViewerListBox自行实施控件,结果在这里:https://www.youtube.com/watch?v=2RcqDMKn0EY(两者的动作非常平滑设备和模拟器,但由于屏幕截图,链接有点不连贯)

然而,我所缺少的是场景一对一的弹性边缘弹性功能。 我曾经尝试过玩操纵事件,但是我没有得到那种平滑的弹性惯性运动,我想在获得挫折感或更糟糕之前要求提出一个优雅实施的建议..黑客攻击和妥协......

因此,非常感谢帮助或建议(甚至针对不同的方法)! :)

<Grid x:Name="layoutRoot">

    <Grid.RowDefinitions>
        <RowDefinition Height="8*"/>
        <RowDefinition Height="10*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="14*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>

    <ScrollViewer Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Name="scrollViewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
    <ListBox Name="listBoxScenes"  ItemsSource="{Binding Scenes}" ScrollViewer.VerticalScrollBarVisibility ="Disabled" SelectedItem="{Binding SelectedScene, Mode=TwoWay}">

        <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        </Style>
        </ListBox.ItemContainerStyle>

        <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

        <ListBox.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="Black" BorderThickness="0">
            <Grid Width="{Binding SceneWidth}">
                <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <!--Contains the item name and the date-->
                <StackPanel Grid.Row="0">
                <TextBlock Text="{Binding ItemName, FallbackValue=Item1}" Margin="9,30,0,0" Style="{StaticResource PhoneTextTitle1Style}" HorizontalAlignment="Center"/>
                <TextBlock Text="{Binding CurrentTime, StringFormat=D, FallbackValue='Sunday, May 11, 2014'}" Style="{StaticResource PhoneTextNormalStyle}" HorizontalAlignment="Right"/>
                </StackPanel>

            </Grid>
            </Border>
        </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    </ScrollViewer>
</Grid>

0 个答案:

没有答案