2

我使用 DXCarousel 有一段时间了,但据我所知,默认行为始终是使选定的项目位于中心前面,尺寸最大,并且一个或更多项目不可见,因为它们用于减小尺寸的缩放非常小。

我想要的只是具有这种行为的简单轮播:所选项目位于前面,尺寸较大(这已经完成),但最后面的项目的其余部分应该是可见的。

我想要的行为示例基于大多数轮播工作,例如 Jeep 网页中的这个轮播:http: //www.jeep.com/en/

该页面将显示 5-6 款带有轮播界面的 Jeep 模型,并且所有项目都可见。

更新:

我还想要中心最远的项目。但这在某种程度上使用基本的 DXCarousel 实现是不可行的,因为它取决于将显示多少项目。

使用 DXCarousel 文档中“第 4 课 - 使用函数和参数”的函数分布示例对我有帮助,最远的对象位于中心,但方向以某种方式旋转了 90 度左右。

更新 2:

下面 Dimitry 的代码运行良好,但在播放动画时(选择时),最远的项目仍然不太明显。因此,我决定这不是我喜欢或想要的行为。

4

1 回答 1

2

我相信您可以使用CarouselPanel.OffsetDistributionFunction使最远的项目可见,就像在此代码段中演示的那样:

<dx:CarouselPanel Name="carouselPanel1" AttractorPointIndex="2" PathSizingMode="Stretch"
                  IsRepeat="True"
                  Width ="400" Height="150" ItemSize="100,100"
                  ItemMovingPath="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type dx:CarouselPanel}, ResourceId=Ellipse}}"
                  >
    <dx:CarouselPanel.Resources>
        <Style TargetType="{x:Type Border}" 
               BasedOn="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type dx:CarouselPanel}, ResourceId=advancedCarouselItemStyle}}" >
            <Setter Property="Opacity" Value="1" /><!-- supress opacity animation -->
        </Style>
    </dx:CarouselPanel.Resources>
    <dx:CarouselPanel.OffsetDistributionFunction>
        <dx:LinearFunction K="0.8" B="0.1" />
    </dx:CarouselPanel.OffsetDistributionFunction>
    <Border Background="Red" />
    <Border Background="Green" />
    <Border Background="Blue" />
    <Border Background="Yellow" />
    <Border Background="Pink" />
</dx:CarouselPanel>

我正在使用f(x)=0.8*x+0.1线性函数将项目分布间隔从默认范围([0..1])调整到 [0.1 ... 0.9] 范围。

于 2012-07-23T05:26:30.560 回答