MindFusion.Scheduling for Silverlight Programmer's Guide
Default Styles and Templates

This topic shows the default styles of the ActivityPresenter, AllocationPresenter and DependencyPresenter classes. The styles reference various theme-specific brushes defined as static resources. Those brushes are not listed here for clarity.

XAML  Copy Code

<!-- ActivityPresenter style -->
<Style TargetType="local:ActivityPresenter">

  <Setter Property="ResourcesLabelFontWeight" Value="Bold"/>
  <Setter Property="ResourcesLabelForeground" Value="{StaticResource ActivityResourceTextBrush}" />
  <Setter Property="Height" Value="16"/>
  <Setter Property="ProgressBackground" Value="{StaticResource ProgressBackgroundBrush}"/>

  <Setter Property="Template">
    <Setter.Value>

      <ControlTemplate TargetType="local:ActivityPresenter">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="5" />
            <ColumnDefinition />
            <ColumnDefinition Width="5" />
          </Grid.ColumnDefinitions>

          <!-- Start resize handle -->
          <Thumb Name="StartResizer" Width="5" Grid.Column="0" HorizontalAlignment="Left" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding LeftResizeCursor}" />

          <!-- End resize handle -->
          <Thumb Name="EndResizer" Width="5" Grid.Column="2" HorizontalAlignment="Right" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding RightResizeCursor}" />

          <!-- Start dependency anchor -->
          <local:SideAnchor x:Name="LeftAnchor" Grid.Column="0" Grid.ColumnSpan="3" Height="8" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,0,1" HorizontalAlignment="Left" VerticalAlignment="Center" Cursor="{TemplateBinding DependencyAnchorCursor}" Opacity="0" Width="5"/>

          <!-- Finish dependency anchor-->
          <local:SideAnchor x:Name="RightAnchor" IsLeftSided="False" Grid.Column="0" Grid.ColumnSpan="3" Height="8" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,1,1" HorizontalAlignment="Right" VerticalAlignment="Center" Cursor="{TemplateBinding DependencyAnchorCursor}"
                                        Width="{Binding Width, ElementName=LeftAnchor}" Opacity="0"/>

          <!-- Non-milestone presentation root (border) -->
          <Border Name="Root" Grid.Column="1"
                                CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}}"
                                BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1"
                                Background="{TemplateBinding Background}"
                                Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}, ConverterParameter=Negate}">
            <Rectangle Name="Focus" Stroke="{TemplateBinding FocusBrush}" StrokeThickness="1" Opacity="0" />
          </Border>

          <!-- Milestone presentation root (path) -->
          <Path Name="MilestoneRoot" Grid.Column="1" Data="M0,0.5 L0.5,1 L1,0.5 L0.5,0 z" Stretch="Uniform" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1"
                              Fill="{TemplateBinding Background}"
                              Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}}"/>
          <Path Name="MilestoneFocus" Grid.Column="1" Data="M0,0.5 L0.5,1 L1,0.5 L0.5,0 z" Stretch="Uniform" Stroke="{TemplateBinding FocusBrush}" StrokeThickness="1" Opacity="0" Margin="2"
                              Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}}"/>

          <!-- AutoActivity presentation root (grid) -->
          <Grid Name="AutoActivityRoot" Grid.Column="1"
                              Visibility="Collapsed"
                              Margin="-7,0">
            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="5" />
              <ColumnDefinition />
              <ColumnDefinition Width="5" />
            </Grid.ColumnDefinitions>

            <Border Name="AutoActivityBorder" Grid.Column="1"
                                    CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}}"
                                    BorderBrush="{TemplateBinding AccentBrush}" BorderThickness="1"
                                    Background="{TemplateBinding Background}"
                                    Margin="8,2,8,8">
            </Border>
            <Path Name="AutoActivityLeftPart" Margin="0,0,-9,0" Grid.Column="0" Data="M0,0 L1,0 L1,0.5 L0.5,1 L0,0.5 Z" Stretch="Uniform" Stroke="{TemplateBinding AccentBrush}" StrokeThickness="1"
                                Fill="{TemplateBinding Background}"/>
            <Path Name="AutoActivityRightPart" Margin="-9,0,0,0" Grid.Column="2" Data="M0,0 L1,0 L1,0.5 L0.5,1 L0,0.5 Z" Stretch="Uniform" Stroke="{TemplateBinding AccentBrush}" StrokeThickness="1"
                                Fill="{TemplateBinding Background}"/>
          </Grid>

          <!-- Move handle -->
          <Thumb Name="Mover" Grid.Column="1" Style="{StaticResource InvisibleThumb}" />

          <!-- Progress presentation -->
          <Border Name="ProgressContainer" Grid.Column="1" Margin="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}, ConverterParameter=Negate}">
            <local:ProgressPanel Progress="{Binding Progress}" HorizontalAlignment="Left">
              <Rectangle Fill="Red" IsHitTestVisible="False"/>
              <Thumb Width="5" Name="ProgressResizer" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding ProgressResizeCursor}"/>
            </local:ProgressPanel>
          </Border>

          <Border x:Name="LeftSide" Grid.Column="0" Margin="5,0,-5,0" IsHitTestVisible="False" BorderThickness="2,2,0,2" BorderBrush="{TemplateBinding AccentBrush}" CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}, ConverterParameter=Left}"
                                Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}, ConverterParameter=Negate}"/>
          <Border x:Name="RightSide" Grid.Column="2" Margin="-5,0,5,0" IsHitTestVisible="False" BorderThickness="0,2,2,2" BorderBrush="{TemplateBinding AccentBrush}" CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}, ConverterParameter=Right}"
                                Visibility="{Binding IsMilestone, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}, ConverterParameter=Negate}"/>

          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualState x:Name="Normal">
                <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:0.2" To="0" />
                  <DoubleAnimation Storyboard.TargetName="RightAnchor" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:0.2" To="0" />
                </Storyboard>
              </VisualState>
              <VisualState x:Name="MouseOver">
                <Storyboard>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Root" Storyboard.TargetProperty="Background" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Root" Storyboard.TargetProperty="BorderBrush" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MilestoneRoot" Storyboard.TargetProperty="Fill" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MilestoneRoot" Storyboard.TargetProperty="Stroke" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityBorder" Storyboard.TargetProperty="BorderBrush" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityBorder" Storyboard.TargetProperty="Background" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityLeftPart" Storyboard.TargetProperty="Stroke" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityLeftPart" Storyboard.TargetProperty="Fill" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityRightPart" Storyboard.TargetProperty="Stroke" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="AutoActivityRightPart" Storyboard.TargetProperty="Fill" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" KeyTime="0:0" />
                  </ObjectAnimationUsingKeyFrames>

                  <DoubleAnimation Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="Opacity" Duration="0:0:0.2" To="1" />
                  <DoubleAnimation Storyboard.TargetName="RightAnchor" Storyboard.TargetProperty="Opacity" Duration="0:0:0.2" To="1" />
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="Forms">
              <VisualState x:Name="ScheduleMode.Manual"/>
              <VisualState x:Name="ScheduleMode.Auto">
                <Storyboard RepeatBehavior="Forever">
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="Root" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="StartResizer" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="EndResizer" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="RightAnchor" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="Mover" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/>
                  </ObjectAnimationUsingKeyFrames>

                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="Margin">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="7,4,7,0"/>
                  </ObjectAnimationUsingKeyFrames>

                  <DoubleAnimation Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="Height" To="2" Duration="00:00:00" />

                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="VerticalAlignment">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Top"/>
                  </ObjectAnimationUsingKeyFrames>

                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="IsHitTestVisible" Duration="00:00:00">
                    <DiscreteObjectKeyFrame Value="False" KeyTime="00:00:00"/>
                  </ObjectAnimationUsingKeyFrames>

                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LeftSide" Storyboard.TargetProperty="Visibility" Duration="00:00:00">
                    <DiscreteObjectKeyFrame Value="Collapsed" KeyTime="00:00:00"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RightSide" Storyboard.TargetProperty="Visibility" Duration="00:00:00">
                    <DiscreteObjectKeyFrame Value="Collapsed" KeyTime="00:00:00"/>
                  </ObjectAnimationUsingKeyFrames>

                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="AutoActivityRoot" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/>
                  </ObjectAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="ScheduleMode.SemiAuto">
                <Storyboard RepeatBehavior="Forever">

                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="Root" Storyboard.TargetProperty="Margin">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="0,3"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="Root" Storyboard.TargetProperty="CornerRadius">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="3"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="ProgressContainer" Storyboard.TargetProperty="Height">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="2"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="LeftSide" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="RightSide" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Duration="00:00:00" Storyboard.TargetName="RightAnchor" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Collapsed"/>
                  </ObjectAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Milestone">
                <Storyboard RepeatBehavior="Forever">
                  <DoubleAnimation Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="Width" To="10" Duration="00:00:00"/>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
            <VisualStateGroup x:Name="FocusStates">
              <VisualState x:Name="Unfocused"/>
              <VisualState x:Name="Focused">
                <Storyboard RepeatBehavior="Forever">
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Focus" Storyboard.TargetProperty="Opacity" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="1" KeyTime="0:0"/>
                  </ObjectAnimationUsingKeyFrames>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetName="MilestoneFocus" Storyboard.TargetProperty="Opacity" Duration="0:0">
                    <DiscreteObjectKeyFrame Value="1" KeyTime="0:0"/>
                  </ObjectAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
        </Grid>

      </ControlTemplate>

    </Setter.Value>
  </Setter>

</Style>

XAML  Copy Code

<!-- AllocationPresenter style -->
<Style TargetType="local:AllocationPresenter">

  <Setter Property="Height" Value="16"/>
  <Setter Property="ProgressBackground" Value="{StaticResource ProgressBackgroundBrush}"/>

  <Setter Property="Template">
    <Setter.Value>

      <ControlTemplate TargetType="local:AllocationPresenter">
        <Grid ToolTipService.ToolTip="{Binding Path=Allocation.ActivityName, RelativeSource={RelativeSource TemplatedParent}}">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="5" />
            <ColumnDefinition />
            <ColumnDefinition Width="5" />
          </Grid.ColumnDefinitions>

          <!-- Start resize handle -->
          <Thumb Width="5" Grid.Column="0" HorizontalAlignment="Left" Name="StartResizer" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding LeftResizeCursor}" />

          <!-- End resize handle -->
          <Thumb Width="5" Grid.Column="2" HorizontalAlignment="Right" Name="EndResizer" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding RightResizeCursor}" />

          <!-- Non-milestone presentation root (border) -->
          <Border Name="Root" Grid.Column="1"
                  CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}}"
                  BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1"
                  Background="{TemplateBinding Background}">
            <Rectangle Name="Focus" RadiusX="0" RadiusY="0" Stroke="{TemplateBinding FocusBrush}" StrokeThickness="1" Opacity="0" />
          </Border>

          <!-- Move handle -->
          <Thumb Name="Mover" Grid.Column="1" Style="{StaticResource InvisibleThumb}" />

          <TextBlock Grid.Column="1" IsHitTestVisible="False" HorizontalAlignment="Center" VerticalAlignment="Center"
                     Text="{Binding Path=Allocation.ActivityName, RelativeSource={RelativeSource TemplatedParent}}"
     Visibility="{Binding Path=ShowActivity, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource visibilityConverter}}"
     Foreground="{TemplateBinding ActivityNameForeground}"/>

          <Border x:Name="LeftSide" Grid.Column="0" Margin="5,0,-5,0" IsHitTestVisible="False" BorderThickness="2,2,0,2" BorderBrush="{TemplateBinding AccentBrush}"
                  CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}, ConverterParameter=Left}" />
          <Border x:Name="RightSide" Grid.Column="2" Margin="-5,0,5,0" IsHitTestVisible="False" BorderThickness="0,2,2,2" BorderBrush="{TemplateBinding AccentBrush}"
                  CornerRadius="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource cornerRadiusConverter}, ConverterParameter=Right}" />
        </Grid>

      </ControlTemplate>

    </Setter.Value>
  </Setter>

</Style>

XAML  Copy Code

<!-- DependencyPresenter style -->
<Style TargetType="local:DependencyPresenter">

  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="local:DependencyPresenter">
        <Path Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding StrokeThickness}" Data="{TemplateBinding PathData}" Stretch="None"
                          />
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>