MindFusion.Wpf Pack 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.

ActivityPresenter

XAML  Copy Code

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

  <Setter Property="ResourcesLabelFontWeight" Value="Bold"/>
  <Setter Property="ResourcesLabelForeground" Value="{StaticResource ActivityResourceTextBrush}" />
  <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  <Setter Property="SnapsToDevicePixels" Value="False" />
  <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 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}" />

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

          <!-- Finish dependency anchor-->
          <Thumb x:Name="RightAnchor" Grid.Column="0" Grid.ColumnSpan="3" Width="5" Height="8" Style="{StaticResource RightAnchor}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,1,1" Visibility="Visible" Opacity="0" IsHitTestVisible="False" HorizontalAlignment="Right" VerticalAlignment="Center" Cursor="{TemplateBinding DependencyAnchorCursor}" />

          <!-- 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>

          <!-- 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" Visibility="Collapsed" Fill="{TemplateBinding Background}">
          </Path>
          <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" Visibility="Collapsed" Opacity="0" Margin="2" />

          <!-- 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>
            <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}">
            </Path>
          </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">
            <Border Name="Progress" Width="{TemplateBinding ProgressLength}" HorizontalAlignment="Left">
              <Grid>
                <Grid.ColumnDefinitions>
                  <ColumnDefinition />
                  <ColumnDefinition Width="5" />
                </Grid.ColumnDefinitions>
                <Border Grid.ColumnSpan="2" Background="{TemplateBinding ProgressBackground}" IsHitTestVisible="False" />
                <Thumb Grid.Column="1" Name="ProgressResizer" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding ProgressResizeCursor}" />
              </Grid>
            </Border>
          </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}" />
          <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.Triggers>

          <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="Root" Property="Background" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="Root" Property="BorderBrush" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="MilestoneRoot" Property="Fill" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="MilestoneRoot" Property="Stroke" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="LeftAnchor" Property="IsHitTestVisible" Value="True" />
            <Setter TargetName="RightAnchor" Property="IsHitTestVisible" Value="True" />
            <Setter TargetName="AutoActivityBorder" Property="BorderBrush" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="AutoActivityBorder" Property="Background" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="AutoActivityLeftPart" Property="Stroke" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="AutoActivityLeftPart" Property="Fill" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="AutoActivityRightPart" Property="Stroke" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="AutoActivityRightPart" Property="Fill" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
          </Trigger>

          <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter TargetName="Focus" Property="Opacity" Value="1" />
            <Setter TargetName="MilestoneFocus" Property="Opacity" Value="1" />
          </Trigger>

          <Trigger Property="EnableDependencies" Value="False">
            <Setter TargetName="LeftAnchor" Property="Visibility" Value="Collapsed"/>
            <Setter TargetName="RightAnchor" Property="Visibility" Value="Collapsed"/>
          </Trigger>

          <EventTrigger RoutedEvent="UIElement.MouseEnter">
            <BeginStoryboard>
              <Storyboard>
                <DoubleAnimation Storyboard.TargetName="LeftAnchor" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:0.2" To="1" />
                <DoubleAnimation Storyboard.TargetName="RightAnchor" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:0.2" To="1" />
              </Storyboard>
            </BeginStoryboard>
          </EventTrigger>

          <EventTrigger RoutedEvent="UIElement.MouseLeave">
            <BeginStoryboard>
              <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>
            </BeginStoryboard>
          </EventTrigger>

          <Trigger Property="IsMouseOver" SourceName="LeftAnchor" Value="True">
            <Setter TargetName="LeftAnchor" Property="Background" Value="Red" />
          </Trigger>

          <Trigger Property="IsMouseOver" SourceName="RightAnchor" Value="True">
            <Setter TargetName="RightAnchor" Property="Background" Value="Red" />
          </Trigger>

          <Trigger Property="IsMilestone" Value="True">
            <Setter TargetName="Root" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="ProgressContainer" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="MilestoneRoot" Property="Visibility" Value="Visible" />
            <Setter TargetName="MilestoneFocus" Property="Visibility" Value="Visible" />
            <Setter TargetName="LeftAnchor" Property="Width" Value="10" />
            <Setter TargetName="RightAnchor" Property="Width" Value="10" />
            <Setter TargetName="LeftSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="AutoActivityRightPart" Property="Margin" Value="-11,1,1,1" />
          </Trigger>

          <Trigger Property="ScheduleMode" Value="Auto">
            <Setter TargetName="Root" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="StartResizer" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="EndResizer" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="LeftAnchor" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightAnchor" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="Mover" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="ProgressContainer" Property="Visibility" Value="Visible" />
            <Setter TargetName="ProgressContainer" Property="Margin" Value="7,4,7,0" />
            <Setter TargetName="ProgressContainer" Property="Height" Value="2" />
            <Setter TargetName="ProgressContainer" Property="VerticalAlignment" Value="Top" />
            <Setter TargetName="ProgressContainer" Property="IsHitTestVisible" Value="False" />
            <Setter TargetName="MilestoneRoot" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="MilestoneFocus" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="LeftSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="AutoActivityRoot" Property="Visibility" Value="Visible" />
            <Setter Property="IsTabStop" Value="False" />
          </Trigger>

          <MultiTrigger>
            <MultiTrigger.Conditions>
              <Condition Property="ScheduleMode" Value="SemiAuto" />
              <Condition Property="IsMilestone" Value="False"/>
            </MultiTrigger.Conditions>
            <Setter TargetName="Root" Property="Margin" Value="0,3" />
            <Setter TargetName="Root" Property="CornerRadius" Value="3" />
            <Setter TargetName="ProgressContainer" Property="Visibility" Value="Visible" />
            <Setter TargetName="ProgressContainer" Property="Height" Value="2" />
            <Setter TargetName="LeftSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="LeftAnchor" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightAnchor" Property="Visibility" Value="Collapsed" />
          </MultiTrigger>

          <MultiTrigger>
            <MultiTrigger.Conditions>
              <Condition Property="ScheduleMode" Value="SemiAuto" />
              <Condition Property="IsMilestone" Value="True"/>
            </MultiTrigger.Conditions>
            <Setter TargetName="LeftSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightSide" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="LeftAnchor" Property="Visibility" Value="Collapsed" />
            <Setter TargetName="RightAnchor" Property="Visibility" Value="Collapsed" />
          </MultiTrigger>

        </ControlTemplate.Triggers>

      </ControlTemplate>

    </Setter.Value>
  </Setter>

</Style>

AllocationPresenter

XAML  Copy Code

<Style TargetType="local:AllocationPresenter">

  <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  <Setter Property="SnapsToDevicePixels" Value="False" />
  <Setter Property="Height" Value="16"/>
  <Setter Property="ProgressBackground" Value="{StaticResource ProgressBackgroundBrush}"/>

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

      <ControlTemplate TargetType="local:AllocationPresenter">

        <Grid 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}" />

          <!-- Progress presentation -->
          <Border Name="ProgressContainer" Grid.Column="1" Margin="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch">
            <Border Name="Progress" Width="{TemplateBinding ProgressLength}" HorizontalAlignment="Left">
              <Grid>
                <Grid.ColumnDefinitions>
                  <ColumnDefinition />
                  <ColumnDefinition Width="5" />
                </Grid.ColumnDefinitions>
                <Border Grid.ColumnSpan="2" Background="{TemplateBinding ProgressBackground}" IsHitTestVisible="False" />
                <Thumb Grid.Column="1" Name="ProgressResizer" Style="{StaticResource InvisibleThumb}" Cursor="{TemplateBinding ProgressResizeCursor}" />
              </Grid>
            </Border>
          </Border>
          <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}}"/>

          <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.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="Root" Property="Background" Value="{Binding Path=MouseOverBackground, RelativeSource={RelativeSource TemplatedParent}}" />
            <Setter TargetName="Root" Property="BorderBrush" Value="{Binding Path=MouseOverBorderBrush, RelativeSource={RelativeSource TemplatedParent}}" />
          </Trigger>
          <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter TargetName="Focus" Property="Opacity" Value="1" />
          </Trigger>
        </ControlTemplate.Triggers>

      </ControlTemplate>

    </Setter.Value>
  </Setter>

</Style>

DependencyPresenter

XAML  Copy Code

<Style TargetType="local:DependencyPresenter">

  <Setter Property="SnapsToDevicePixels" Value="False" />

  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="local:DependencyPresenter">
        <Path Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" Data="{TemplateBinding PathData}" Stretch="Fill" Margin="{TemplateBinding HitTestDistance, Converter={StaticResource thicknessValueConverter}}" />
      </ControlTemplate>
    </Setter.Value>
  </Setter>

</Style>