default.aspx
Silverlight .NET Controls and CMS
Home
controls.aspx
Silverlight Controls
Controls
controls/tree_view.aspx
Silverlight Tree View Control
Tree View
Visual Customizations

Customizing the Tree View Control With Skinning

The Tree View can be skinned using the standard Silverlight 2 method of using Styles, the default styles can easily be modified to suite the style of your site.

Example of how to Apply Styles to the Tree View

These styles are placed in your XAML and referred to using the Style property:


     <Style TargetType="local:Tree">
          <Setter Property="Template">
               <Setter.Value>
                    <ControlTemplate TargetType="local:Tree">
                         <Canvas x:Name="RootElement" Background="#00ffffff">
                              <ContentControl x:Name="ElementWrapper">
                                   <ScrollViewer x:Name="ElementContainer" Background="#ffffff">
                                        <Canvas x:Name="ElementChildren" VerticalAlignment="Top" HorizontalAlignment="Left" />
                                   </ScrollViewer>
                              </ContentControl>
                         </Canvas>
                    </ControlTemplate>
               </Setter.Value>
          </Setter>
     </Style>

 

    <Style TargetType="local:Node">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:Node">
                    <Canvas x:Name="RootElement" Background="#00ffffff">
                        <Canvas.Resources>
                            <Storyboard x:Name="ElementFadeIn" BeginTime="0">
                                <DoubleAnimation Storyboard.TargetName="ElementChildren" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:0.2"/>
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleX" From="0.0" To="1.0" Duration="0:0:0.2"/>
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleY" From="0.0" To="1.0" Duration="0:0:0.2"/>
                            </Storyboard>
                        </Canvas.Resources>

                        <Rectangle x:Name="ElementBackgroundHover" StrokeThickness="1" Stroke="#d8f0fa" RadiusX="2" RadiusY="2" Visibility="Collapsed">
                            <Rectangle.Fill>
                                <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                    <GradientStop Color="#f8fcfe" Offset="0.0" />
                                    <GradientStop Color="#e8f5fd" Offset="1.0" />
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>

                        <Rectangle x:Name="ElementBackground" StrokeThickness="1" Stroke="#99defd" RadiusX="2" RadiusY="2" Visibility="Collapsed">
                            <Rectangle.Fill>
                                <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                    <GradientStop Color="#f6fbfd" Offset="0.0" />
                                    <GradientStop Color="#d5effc" Offset="0.9" />
                                    <GradientStop Color="#e7f5fd" Offset="0.9" />
                                    <GradientStop Color="#e7f5fd" Offset="1.0" />
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>

                        <Line x:Name="ElementVerticalLine" Stroke="Black" StrokeThickness="0.5" StrokeDashArray="0,1,2,3" StrokeDashOffset="5" StrokeDashCap="Square" />
                        <Line x:Name="ElementHorizontalLine" Stroke="Black" StrokeThickness="0.5" StrokeDashArray="0,1,2,3" StrokeDashOffset="5" StrokeDashCap="Square" />
                        <local:Expand x:Name="ElementExpand" />
                        <Image x:Name="ElementIcon" />
                        <TextBox x:Name="ElementInput" Padding="1" Visibility="Collapsed" BorderThickness="0.5" />
                        <TextBlock x:Name="ElementText" Canvas.Top="2" Text="" FontFamily="{TemplateBinding FontFamily}"
                                   FontSize="{TemplateBinding FontSize}" FontWeight="{TemplateBinding FontWeight}"
                                   FontStyle="{TemplateBinding FontStyle}" Foreground="{TemplateBinding Foreground}"/>
                        <TextBlock x:Name="ElementSelectedText" Text="" Canvas.Top="2" Foreground="#000000" Visibility="Collapsed" />

                        <Canvas x:Name="ElementChildren" Background="#00ffffff" Opacity="0" Visibility="Collapsed">
                            <Canvas.RenderTransform>
                                <ScaleTransform x:Name="ElementChildrenScale" ScaleX="1.0" ScaleY="1.0" />
                            </Canvas.RenderTransform>
                        </Canvas>
                    </Canvas>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

 

    <Style TargetType="local:Expand">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:Expand">
                    <Canvas x:Name="RootElement" Background="#00ffffff" RenderTransformOrigin="0.5,0.5">
                        <Canvas.Resources>
                            <Storyboard x:Name="ElementRotate" BeginTime="0">
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenRotate" Storyboard.TargetProperty="Angle" From="0.0" To="359.0" Duration="0:0:0.5" RepeatBehavior="Forever"/>
                                <DoubleAnimation Storyboard.TargetName="ElementBackground" Storyboard.TargetProperty="StrokeThickness" From="1.0" To="2.5" Duration="0:0:0.4" RepeatBehavior="Forever" AutoReverse="True"/>
                            </Storyboard>
                            <Storyboard x:Name="ElementMouseHover" BeginTime="0">
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleX" From="1.0" To="1.2" Duration="0:0:0.1" />
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleY" From="1.0" To="1.2" Duration="0:0:0.1" />
                            </Storyboard>
                            <Storyboard x:Name="ElementMouseLeave" BeginTime="0">
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleX" From="1.2" To="1.0" Duration="0:0:0.1" />
                                <DoubleAnimation Storyboard.TargetName="ElementChildrenScale" Storyboard.TargetProperty="ScaleY" From="1.2" To="1.0" Duration="0:0:0.1" />
                            </Storyboard>
                        </Canvas.Resources>

                        <Canvas.RenderTransform>
                            <TransformGroup>
                                <RotateTransform x:Name="ElementChildrenRotate" Angle="0" />
                                <ScaleTransform x:Name="ElementChildrenScale" ScaleX="1" ScaleY="1" />
                            </TransformGroup>
                        </Canvas.RenderTransform>

                        <Rectangle x:Name="ElementBackground" StrokeThickness="1" Stroke="#444444" RadiusX="5" RadiusY="5" Width="11" Height="11">
                            <Rectangle.Fill>
                                <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                    <GradientStop Color="#ffffff" Offset="0.0" />
                                    <GradientStop Color="#eeeeee" Offset="1.0" />
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>

                        <Polygon x:Name="ElementMinus" Points="3,5 8,5 8,6 3,6 3,5" Fill="#000000" Opacity="0.8" />
                        <Polygon x:Name="ElementPlus" Points="5,3 6,3 6,5 8,5 8,6 6,6 6,8 5,8 5,6 3,6 3,5 5,5 5,3" Fill="#000000" Opacity="0.8" />
                    </Canvas>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

 

As you can see, styling is a powerful method of customizing the controls to suite the look and feel of your Silverlight application.

Skinned Silverlight Tree Control
 
This page is 64.93KB and was generated by the SilverPages CMS in 0.218 seconds. Total impressions: 570.