Click here to Skip to main content
11,410,750 members (63,786 online)
Click here to Skip to main content
Add your own
alternative version

WPF Amazon Explorer Using 3D

, 27 Feb 2008 CPOL
WPF Amazon Explorer Using 3D
explorer3d.zip
Explorer3D
Explorer3D
3dTools
3DTools.dll
bin
Debug
3DTools.dll
Explorer3D.application
Explorer3D.exe
Explorer3D.exe.manifest
Explorer3D.vshost.application
Explorer3D.vshost.exe
Controls
Explorer3d.csproj.user
Misc Classes
obj
Debug
Controls
TempPE
Properties
app.manifest
Settings.settings
Resources
Amazon.png
arrows.png
banner.png
Favourites.png
Service References
AmazonService
AmazonSearch.wsdl
configuration.svcinfo
Explorer3D.AmazonService.GetTransactionDetailsResponse.datasource
Explorer3D.AmazonService.ListingProductDetails.datasource
Explorer3D.AmazonService.MarketplaceSearch.datasource
Explorer3D.AmazonService.ProductInfo.datasource
Explorer3D.AmazonService.ProductLine.datasource
Explorer3D.AmazonService.SellerProfile.datasource
Explorer3D.AmazonService.SellerSearch.datasource
Explorer3D.AmazonService.ShoppingCart.datasource
Reference.svcmap
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:inter3D="clr-namespace:_3DTools;assembly=3DTools"
    xmlns:local="clr-namespace:Explorer3D;assembly="
    x:Class="Explorer3D.ExplorerWindow"
    Title="Explorer3D" Height="600" Width="800"
    WindowState="Maximized"
    Icon="Resources\arrows.png"
    x:Name="mainWindow"
    >




  <Window.Resources>
        <!-- Standard rectangle mesh for Amazon items -->
        <MeshGeometry3D x:Key="planeMesh" Positions="-1,0,0, 1,0,0, 1,1,0, -1,1,0"
                    TextureCoordinates="0,1,1,1,1,0,0,0"
                    TriangleIndices="0 1 2 0 2 3"/>

        <!-- Close Button Used As Part Of Gel Button Template For Amazon Favourite -->    
        <ControlTemplate x:Key="CloseButton" TargetType="Button">

            <Border Opacity="0.5" Name="bord" Margin="0" Width="{TemplateBinding Width}" 
					        Height="{TemplateBinding Height}"  BorderBrush="#FF000000" 
                            BorderThickness="2,2,2,2" CornerRadius="5,5,5,5" Padding="0,0,0,0" 
					        Background="#FFFFFFFF">
                <ContentPresenter Margin="{TemplateBinding Control.Padding}" HorizontalAlignment="Center" 
					        VerticalAlignment="Center" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
					        Content="{TemplateBinding ContentControl.Content}" />
            </Border>

            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter TargetName="bord" Property="Background" Value="#FFFC0C0C"/>
                    <Setter TargetName="bord" Property="Opacity" Value="1.0"/>
                </Trigger>
            </ControlTemplate.Triggers>

        </ControlTemplate>


        <!-- Gel Button Template For Amazon Favourite -->
        <ControlTemplate x:Key="OrangeGelButton" TargetType="Button">
            <Grid Background="#00FFFFFF">
                <Border BorderBrush="#FF000000" CornerRadius="6,6,6,6" BorderThickness="1,1,0,0" Opacity="0.9">
                    <Border.BitmapEffect>
                        <BlurBitmapEffect Radius="1" />
                    </Border.BitmapEffect>
                </Border>
                <Border BorderBrush="#FFFFFFFF" CornerRadius="6,6,6,6" BorderThickness="0,0,0.6,0.6" Opacity="0.7" />
                <Border Margin="1,1,1,1" CornerRadius="6,6,6,6" Name="background">
                    <Border.Background>
                        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                            <LinearGradientBrush.GradientStops>
                                <GradientStop Offset="0" Color="#FFFBD19E" />
                                <GradientStop Offset="1" Color="#FFF68F15" />
                            </LinearGradientBrush.GradientStops>
                        </LinearGradientBrush>
                    </Border.Background>
                    <Grid Margin="1,1,1,1" ClipToBounds="True">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Rectangle Width="{TemplateBinding FrameworkElement.Width}" Fill="#FFFFFFFF" Opacity="0.34" Grid.Row="0" />
                    </Grid>
                </Border>
                <Border Margin="1,1,1,1" BorderBrush="#FFFFFFFF" CornerRadius="6,6,6,6" BorderThickness="0,0,0,0" Opacity="0.3">
                    <Border.BitmapEffect>
                        <BlurBitmapEffect Radius="1" />
                    </Border.BitmapEffect>
                </Border>
                <Border Margin="1,1,1,1" BorderBrush="#FF000000" CornerRadius="6,6,6,6" BorderThickness="0,0,0.6,0.6" Opacity="1">
                    <Border.BitmapEffect>
                        <BlurBitmapEffect Radius="1" />
                    </Border.BitmapEffect>
                </Border>
                <Image Source="resources/Amazon.png" Width="60" Height="11" Stretch="Fill" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="5,5,50,5"/>
                <ContentPresenter Margin="5,13,5,5" HorizontalAlignment="Left" VerticalAlignment="Top" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" Content="{TemplateBinding ContentControl.Content}" />
                <Button x:Name="btnSub" Click="btnDeleteFavourite_Click" HorizontalAlignment="Right" Content="X" Margin="0,0,5,0" Width="20" Height="20" FontFamily="Arial Rounded MT" FontSize="11" FontWeight="Normal" Template="{StaticResource CloseButton}" />
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="UIElement.IsMouseOver" Value="True">
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <Storyboard.Children>
                                    <ColorAnimation To="#FFFBD19E" FillBehavior="HoldEnd" Duration="00:00:00.4000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[0].(GradientStop.Color)" />
                                    <ColorAnimation To="#FFF68F15" FillBehavior="HoldEnd" Duration="00:00:00.4000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[1].(GradientStop.Color)" />
                                </Storyboard.Children>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <Storyboard.Children>
                                    <ColorAnimation To="#FFFAF688" FillBehavior="HoldEnd" Duration="00:00:00.2000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[0].(GradientStop.Color)" />
                                    <ColorAnimation To="#FFF6D415" FillBehavior="HoldEnd" Duration="00:00:00.2000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[1].(GradientStop.Color)" />
                                </Storyboard.Children>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
                <Trigger Property="ButtonBase.IsPressed" Value="True">
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <Storyboard.Children>
                                    <ColorAnimation To="#FFFAF688" FillBehavior="Stop" Duration="00:00:00.4000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[0].(GradientStop.Color)" />
                                    <ColorAnimation To="#FFF6D415" FillBehavior="Stop" Duration="00:00:00.4000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[1].(GradientStop.Color)" />
                                </Storyboard.Children>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <Storyboard.Children>
                                    <ColorAnimation To="#FFFAA182" FillBehavior="HoldEnd" Duration="00:00:00.2000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[0].(GradientStop.Color)" />
                                    <ColorAnimation To="#FFFD6420" FillBehavior="HoldEnd" Duration="00:00:00.2000000" Storyboard.TargetName="background" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops).[1].(GradientStop.Color)" />
                                </Storyboard.Children>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>



        <!-- This is where the look and feel of the items is defined for the
             icFavourites ItemsControl -->
        <DataTemplate x:Key="favItemsTemplate">
            <Button Content="{Binding Price}" VerticalAlignment="Top" HorizontalAlignment="Left"
                        Padding="3" Width="130" Height="30" FontFamily="Arial Rounded MT" 
                        FontSize="12" FontWeight="Normal" Foreground="#FFEF3800"
                        Template="{StaticResource OrangeGelButton}"
                        Margin="5,5,5,5"
                        Click="btnFavMain_Click">
                <Button.ToolTip>
                    <Border Background="White" CornerRadius="5,5,5,5" Width="200">
                        <DockPanel Width="Auto" Height="Auto" LastChildFill="True">
                            <Label Margin="2,2,2,2" VerticalAlignment="Top" Width="Auto" Height="Auto" 
                                   Content="Amazon Favourite" Background="#FF000000" FontFamily="Arial Rounded MT" 
                                   FontSize="14" Foreground="#FFFFFFFF" DockPanel.Dock="Top"/>
                            <TextBlock Margin="2,2,2,2" Width="Auto" Height="Auto" TextWrapping="Wrap">
                                <Run Language="en-gb">You have saved this Amazon item as a favourite. You can click it to re open it, 
                                        or click on the close button to delete it from the favourites list</Run>
                            </TextBlock>
                        </DockPanel>
                    </Border>
                </Button.ToolTip>
            </Button>
        </DataTemplate>


        <!-- All the following is required to Re-Style the ScrollViewer, see 
             http://msdn2.microsoft.com/en-us/library/aa970847(VS.85).aspx
             http://msdn2.microsoft.com/en-us/library/ms742173(VS.85).aspx
             for the default Stles that the ScrollViewer has out of the box
         -->
      
        <!-- Brushes used in Styling of ScrollViewer -->
        <SolidColorBrush x:Key="StandardBorderBrush" Color="#888" />
        <SolidColorBrush x:Key="StandardBackgroundBrush" Color="#FFF" />
        <SolidColorBrush x:Key="HoverBorderBrush" Color="#DDD" />
        <SolidColorBrush x:Key="SelectedBackgroundBrush" Color="Gray" />
        <SolidColorBrush x:Key="SelectedForegroundBrush" Color="White" />
        <SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" />
        <SolidColorBrush x:Key="NormalBrush" Color="#888" />
        <SolidColorBrush x:Key="NormalBorderBrush" Color="#888" />
        <SolidColorBrush x:Key="HorizontalNormalBrush" Color="#888" />
        <SolidColorBrush x:Key="HorizontalNormalBorderBrush" Color="#888" />
        <LinearGradientBrush x:Key="ListBoxBackgroundBrush" StartPoint="0,0" EndPoint="1,0.001">
            <GradientBrush.GradientStops>
                <GradientStopCollection>
                    <GradientStop Color="White" Offset="0.0" />
                    <GradientStop Color="White" Offset="0.6" />
                    <GradientStop Color="#DDDDDD" Offset="1.2"/>
                </GradientStopCollection>
            </GradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="StandardBrush" StartPoint="0,0" EndPoint="0,1">
            <GradientBrush.GradientStops>
                <GradientStopCollection>
                    <GradientStop Color="#FFF" Offset="0.0"/>
                    <GradientStop Color="#CCC" Offset="1.0"/>
                </GradientStopCollection>
            </GradientBrush.GradientStops>
        </LinearGradientBrush>
        <SolidColorBrush x:Key="GlyphBrush" Color="#444" />
        <LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
            <GradientBrush.GradientStops>
                <GradientStopCollection>
                    <GradientStop Color="#BBB" Offset="0.0"/>
                    <GradientStop Color="#EEE" Offset="0.1"/>
                    <GradientStop Color="#EEE" Offset="0.9"/>
                    <GradientStop Color="#FFF" Offset="1.0"/>
                </GradientStopCollection>
            </GradientBrush.GradientStops>
        </LinearGradientBrush>

        <!-- SrollViewer ScrollBar Repeat Buttons (at each end) -->
        <Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Border 
          Name="Border"
          Margin="1" 
          CornerRadius="2" 
          Background="{StaticResource NormalBrush}"
          BorderBrush="{StaticResource NormalBorderBrush}"
          BorderThickness="1">
                            <Path 
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Fill="{StaticResource GlyphBrush}"
            Data="{Binding Path=Content,RelativeSource={RelativeSource TemplatedParent}}" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="true">
                                <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" />
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <!-- SrollViewer ScrollBar Repeat Buttons (The part in the middle, 
             not the thumb the long area between the buttons ) -->
        <Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="IsTabStop" Value="false"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Border Background="Transparent" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <!-- ScrollViewer ScrollBar Thumb, that part that can be dragged
            up/down or left/right Buttons -->
        <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Setter Property="IsTabStop" Value="false"/>
            <Setter Property="Focusable" Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Border 
          CornerRadius="2" 
          Background="{TemplateBinding Background}"
          BorderBrush="{TemplateBinding BorderBrush}"
          BorderThickness="1" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
            <Grid >
                <Grid.RowDefinitions>
                    <RowDefinition MaxHeight="18"/>
                    <RowDefinition Height="0.00001*"/>
                    <RowDefinition MaxHeight="18"/>
                </Grid.RowDefinitions>
                <Border
      Grid.RowSpan="3"
      CornerRadius="2" 
      Background="#F0F0F0" />
                <RepeatButton 
      Grid.Row="0"                           
      Style="{StaticResource ScrollBarLineButton}"
      Height="18"
      Command="ScrollBar.LineUpCommand"
      Content="M 0 4 L 8 4 L 4 0 Z" />
                <Track 
      Name="PART_Track"
      Grid.Row="1"
      IsDirectionReversed="true">
                    <Track.DecreaseRepeatButton>
                        <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageUpCommand" />
                    </Track.DecreaseRepeatButton>
                    <Track.Thumb>
                        <Thumb 
          Style="{StaticResource ScrollBarThumb}" 
          Margin="1,0,1,0"  
          Background="{StaticResource HorizontalNormalBrush}"
          BorderBrush="{StaticResource HorizontalNormalBorderBrush}" />
                    </Track.Thumb>
                    <Track.IncreaseRepeatButton>
                        <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageDownCommand" />
                    </Track.IncreaseRepeatButton>
                </Track>
                <RepeatButton 
      Grid.Row="3" 
      Style="{StaticResource ScrollBarLineButton}"
      Height="18"
      Command="ScrollBar.LineDownCommand"
      Content="M 0 0 L 4 4 L 8 0 Z"/>
            </Grid>
        </ControlTemplate>
        <!-- HorizontalScrollBar Template using the previously created Templates -->
        <ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MaxWidth="18"/>
                    <ColumnDefinition Width="0.00001*"/>
                    <ColumnDefinition MaxWidth="18"/>
                </Grid.ColumnDefinitions>
                <Border
      Grid.ColumnSpan="3"
      CornerRadius="2" 
      Background="#F0F0F0" />
                <RepeatButton 
      Grid.Column="0"                           
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineLeftCommand"
      Content="M 4 0 L 4 8 L 0 4 Z" />
                <Track 
      Name="PART_Track"
      Grid.Column="1"
      IsDirectionReversed="False">
                    <Track.DecreaseRepeatButton>
                        <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageLeftCommand" />
                    </Track.DecreaseRepeatButton>
                    <Track.Thumb>
                        <Thumb 
          Style="{StaticResource ScrollBarThumb}" 
          Margin="0,1,0,1"  
          Background="{StaticResource NormalBrush}"
          BorderBrush="{StaticResource NormalBorderBrush}" />
                    </Track.Thumb>
                    <Track.IncreaseRepeatButton>
                        <RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageRightCommand" />
                    </Track.IncreaseRepeatButton>
                </Track>
                <RepeatButton 
      Grid.Column="3" 
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineRightCommand"
      Content="M 0 0 L 4 4 L 0 8 Z"/>
            </Grid>
        </ControlTemplate>
        <!-- Style for overall  ScrollBar -->
        <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Horizontal">
                    <Setter Property="Width" Value="Auto"/>
                    <Setter Property="Height" Value="18" />
                    <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
                </Trigger>
                <Trigger Property="Orientation" Value="Vertical">
                    <Setter Property="Width" Value="18"/>
                    <Setter Property="Height" Value="Auto" />
                    <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
                </Trigger>
            </Style.Triggers>
        </Style>

        <!-- Style for overall  ScrollViewer -->
        <Style x:Key="FavsScrollViewer" TargetType="{x:Type ScrollViewer}">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ScrollViewer}">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>

                            <ScrollContentPresenter Grid.Column="1"/>

                            <ScrollBar Name="PART_VerticalScrollBar"
            Value="{TemplateBinding VerticalOffset}"
            Maximum="{TemplateBinding ScrollableHeight}"
            ViewportSize="{TemplateBinding ViewportHeight}"
            Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
                            <ScrollBar Name="PART_HorizontalScrollBar"
            Orientation="Horizontal"
            Grid.Row="1"
            Grid.Column="1"
            Value="{TemplateBinding HorizontalOffset}"
            Maximum="{TemplateBinding ScrollableWidth}"
            ViewportSize="{TemplateBinding ViewportWidth}"
            Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>


    <DockPanel LastChildFill="True" Background="#FF414141">
        <StackPanel DockPanel.Dock="Top" Orientation="Vertical">
            <Canvas Height="82">
                <Canvas.Background>
                    <LinearGradientBrush EndPoint="0.413,0.023" StartPoint="0.414,1.175">
                        <GradientStop Color="#FFFF9A00" Offset="0"/>
                        <GradientStop Color="#FFEF3800" Offset="0.909"/>
                        <GradientStop Color="#FFFF940C" Offset="0.399"/>
                    </LinearGradientBrush>
                </Canvas.Background>
            	<Image Width="400" Height="80" Canvas.Left="87" Opacity="1" Canvas.Top="4" Source="Resources\banner.png"/>
            	<Rectangle RenderTransformOrigin="0.5,0.5" Fill="{x:Null}" Stroke="#FF000000" StrokeThickness="6" Width="50" Height="50" Canvas.Left="17" Canvas.Top="16">
            		<Rectangle.RenderTransform>
            			<TransformGroup>
            				<ScaleTransform ScaleX="1" ScaleY="1"/>
            				<SkewTransform AngleX="0" AngleY="0"/>
            				<RotateTransform Angle="-30"/>
            				<TranslateTransform X="0" Y="0"/>
            			</TransformGroup>
            		</Rectangle.RenderTransform>
            	</Rectangle>
            	<Rectangle RenderTransformOrigin="0.5,0.5" Fill="{x:Null}" Stroke="#FF000000" StrokeThickness="6" Width="40" Height="40" Canvas.Left="49" Canvas.Top="26.5">
            		<Rectangle.RenderTransform>
            			<TransformGroup>
            				<ScaleTransform ScaleX="1" ScaleY="1"/>
            				<SkewTransform AngleX="0" AngleY="0"/>
            				<RotateTransform Angle="-20"/>
            				<TranslateTransform X="0" Y="0"/>
            			</TransformGroup>
            		</Rectangle.RenderTransform>
            	</Rectangle>
            	<Rectangle RenderTransformOrigin="0.5,0.5" Fill="{x:Null}" Stroke="#FF000000" StrokeThickness="4" Width="25" Height="25" Canvas.Left="78" Canvas.Top="44.5">
            		<Rectangle.RenderTransform>
            			<TransformGroup>
            				<ScaleTransform ScaleX="1" ScaleY="1"/>
            				<SkewTransform AngleX="0" AngleY="0"/>
            				<RotateTransform Angle="-40"/>
            				<TranslateTransform X="0" Y="0"/>
            			</TransformGroup>
            		</Rectangle.RenderTransform>
            	</Rectangle>
            </Canvas>
			<Canvas Height="39" Background="#FFFF9A00">
			
			
				<local:AlphaNumericOnlyTextBox x:Name="txtSearchWord" KeyUp="txtSearchWord_KeyUp" Canvas.Left="13" Canvas.Top="3" Width="218" Height="25" TextWrapping="Wrap" Background="#FF000000"  BorderBrush="{x:Null}" Foreground="#FFFFFFFF"/>
				
				<Image Width="35" Height="35" Stretch="Fill" x:Name="imgDoSearch" MouseDown="imgDoSearch_MouseDown" Source="Resources\arrows.png" Canvas.Left="234" Canvas.Top="-3"/>

				<StackPanel Orientation="Horizontal" Canvas.Left="329" Canvas.Top="11">
					<RadioButton x:Name="rbBooks" Content="Books" FontWeight="Normal" Foreground="#FF000000" IsChecked="True" Checked="rbBooks_Checked" FontFamily="Arial Rounded MT" FontSize="13" Margin="0,0,0,0"/>
					<RadioButton x:Name="rbMusic" Content="Music" FontWeight="Normal" Foreground="#FF000000" Checked="rbMusic_Checked" FontFamily="Arial Rounded MT" FontSize="13" Margin="20,0,0,0"/>
					<RadioButton x:Name="rbDVD" Content="DVD" FontWeight="Normal" Foreground="#FF000000" Checked="rbDVD_Checked" FontFamily="Arial Rounded MT" FontSize="13" Margin="20,0,0,0"/>
				</StackPanel>
			
			
			
			</Canvas>

        </StackPanel>



        
        

        
                <DockPanel DockPanel.Dock="Bottom" LastChildFill="True">
                    <DockPanel.Background>
                      <RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5"
                        RadiusX="0.5" RadiusY="0.5">
                        <GradientStop Color="#FF424242" Offset="0" />
                        <GradientStop Color="#FF333333" Offset="0.25" />
                        <GradientStop Color="#FF0F0F0F" Offset="0.75" />
                        <GradientStop Color="#FF000000" Offset="1" />
                      </RadialGradientBrush>
                    </DockPanel.Background>






            <StackPanel x:Name="stackFavourites" Orientation="Vertical" DockPanel.Dock="Top" Height="100" Background="{x:Null}">
                

                
            	<Canvas x:Name="canvFavourites" Width="Auto" Height="18" Background="#FF414141">
            		<Label x:Name="lblFavourites" VerticalAlignment="Top" Width="221" Height="30" Content="Show favourites" FontFamily="Arial Rounded MT" FontSize="10" Foreground="#FFFFFFFF" Canvas.Left="8"/>
            	</Canvas>
                    
            <ScrollViewer x:Name="svFavourites" Width="Auto" Height="60" HorizontalScrollBarVisibility="Auto" 
                          VerticalScrollBarVisibility="Hidden" Background="{x:Null}" Style="{StaticResource FavsScrollViewer}">
                    <ItemsControl x:Name="icFavourites" 
                    ItemsSource="{Binding ElementName=mainWindow, Path=FavouriteDataItems}"
                    ItemTemplate="{StaticResource favItemsTemplate}"
                    Width="Auto" Height="Auto">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal" />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </ItemsControl>
                </ScrollViewer>                

                
            </StackPanel>

            <!-- 3D Viewport, wrapped up in some of the nice 3DTools classes 
                 to allow 2D UI elements on 3D and allow trackball functions
                 in 3D space -->
            <inter3D:TrackballDecorator x:Name="inter3d" DockPanel.Dock="Bottom" Height="Auto">
                <inter3D:Interactive3DDecorator>
                    <Viewport3D x:Name="view3D"/>
                </inter3D:Interactive3DDecorator>
            </inter3D:TrackballDecorator>

        </DockPanel>
    </DockPanel>
</Window>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Sacha Barber
Software Developer (Senior)
United Kingdom United Kingdom
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)

- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence

Both of these at Sussex University UK.

Award(s)

I am lucky enough to have won a few awards for Zany Crazy code articles over the years

  • Microsoft C# MVP 2015
  • Codeproject MVP 2015
  • Microsoft C# MVP 2014
  • Codeproject MVP 2014
  • Microsoft C# MVP 2013
  • Codeproject MVP 2013
  • Microsoft C# MVP 2012
  • Codeproject MVP 2012
  • Microsoft C# MVP 2011
  • Codeproject MVP 2011
  • Microsoft C# MVP 2010
  • Codeproject MVP 2010
  • Microsoft C# MVP 2009
  • Codeproject MVP 2009
  • Microsoft C# MVP 2008
  • Codeproject MVP 2008
  • And numerous codeproject awards which you can see over at my blog

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150414.5 | Last Updated 27 Feb 2008
Article Copyright 2008 by Sacha Barber
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid