Click here to Skip to main content
15,885,435 members
Articles / Desktop Programming / WPF

WPF Amazon Explorer Using 3D

Rate me:
Please Sign up or sign in to vote.
4.95/5 (54 votes)
27 Feb 2008CPOL18 min read 186.8K   1.9K   127  
WPF Amazon Explorer Using 3D
<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)


Written By
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 2016
  • Codeproject MVP 2016
  • 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

Comments and Discussions