Mini Kabibi Habibi
<local:CarouselDemoModule x:Class="CarouselDemo.DXBook"
x:Name="ItemCountModule"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxca="http://schemas.devexpress.com/winfx/2008/xaml/carousel"
xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
xmlns:local="clr-namespace:CarouselDemo"
xmlns:collection="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
>
<local:CarouselDemoModule.Resources>
<ResourceDictionary>
<dxca:ParameterCollection x:Key="parameterSet">
<dxca:Parameter Name="ZIndex" DistributionFunction="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type dxca:CarouselPanel}, ResourceId=Linear3PConvexERIntMax}}" />
<dxca:Parameter Name="Angle3d">
<dxca:Parameter.DistributionFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="0" />
<Point X="1" Y="180" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:Parameter.DistributionFunction>
</dxca:Parameter>
</dxca:ParameterCollection>
</ResourceDictionary>
</local:CarouselDemoModule.Resources>
<dxdb:DemoModuleControl>
<Grid ClipToBounds="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" ClipToBounds="False">
<dxca:CarouselItemsControl x:Name="carouselItemsControl" ItemsSource="{DynamicResource logosArray}">
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
<Setter Property="Opacity" Value="{Binding Path=(dxca:CarouselPanel.Parameters).Opacity, RelativeSource={RelativeSource Self}}" />
<Setter Property="Panel.ZIndex" Value="{Binding Path=(dxca:CarouselPanel.Parameters).ZIndex, Converter={local:DoubleToIntConverter},RelativeSource={RelativeSource Self}}" />
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform Angle="{Binding Path=(dxca:CarouselPanel.Parameters).Angle, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
/>
<TranslateTransform X="{Binding Path=(dxca:CarouselPanel.Parameters).OffsetX, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
Y="{Binding Path=(dxca:CarouselPanel.Parameters).OffsetY, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
/>
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<dxca:CarouselPanel
RenderOptions.BitmapScalingMode="HighQuality"
Style="{DynamicResource carouselStyle}"
PathVisible="False"
AttractorPointIndex="1"
AnimationTime="500"
PathPadding="43,0,43,0"
PreviewMouseDown="Grid_PreviewMouseDown"
ItemSize="240,240"
IsAutoSizeItem="True"
IsRepeat="False"
ParameterSet="{DynamicResource parameterSet}"
>
<dxca:CarouselPanel.PointPathFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="0" />
<Point X="0.01" Y="0" />
<Point X="100" Y="0" />
<Point X="100.01" Y="0" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:CarouselPanel.PointPathFunction>
<dxca:CarouselPanel.ItemMovingPath>
<PathGeometry Figures="M0,0 100,0" />
</dxca:CarouselPanel.ItemMovingPath>
</dxca:CarouselPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Viewport3D ClipToBounds="False">
<Viewport3D.Camera>
<PerspectiveCamera Position="0, 0, 3" />
</Viewport3D.Camera>
<Viewport2DVisual3D Visual="{Binding}">
<Viewport2DVisual3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="-0.5" />
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding Path=(dxca:CarouselPanel.Parameters).Angle3d, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}}" Axis="0, 1, 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="0 1 2 0 2 3"
/>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" />
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>
<Viewport2DVisual3D>
<Viewport2DVisual3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="-0.5" />
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding Path=(dxca:CarouselPanel.Parameters).Angle3d, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}}" Axis="0, 1, 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="1,1,0 1,-1,0 -1,-1,0 -1,1,0"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="3 0 1 3 1 2"
/>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" />
</Viewport2DVisual3D.Material>
<Viewport2DVisual3D.Visual>
<Image Source="../Images/logo-back.png" Width="256" Height="256" />
</Viewport2DVisual3D.Visual>
</Viewport2DVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<AmbientLight Color="White" />
<DirectionalLight Color="White" Direction="0,1,-1" />
<DirectionalLight Color="White" Direction="0,-1,-1" />
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</DataTemplate>
</ItemsControl.ItemTemplate>
</dxca:CarouselItemsControl>
</Grid>
<dxca:CarouselNavigator Width="300"
Height="24"
Grid.Row="1"
Carousel="{Binding ElementName=carouselItemsControl, Path=Carousel}"
/>
</Grid>
</dxdb:DemoModuleControl>
</local:CarouselDemoModule>