ProgressBar and Animation


   
      


<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="UseProgressBar" Height="140" Width="300">
    <Grid>
        <ProgressBar Height="21" Name="prgTime" VerticalAlignment="Bottom" />
        <Button Height="23" Margin="100,16,100,0" Name="btnStart" VerticalAlignment="Top" Content="Start">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard Duration="5">
                                <DoubleAnimation Storyboard.TargetName="prgTime"
                                    Storyboard.TargetProperty="Value"
                                    Duration="0:0:5" 
                                    From="0"
To="100" />
                                <DoubleAnimation Storyboard.TargetName="prgTime"
                                    Storyboard.TargetProperty="Value"
                                    BeginTime="0:0:6"
                                    Duration="0:0:0" 
                                    From="100"
To="0" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </Grid>
</Window>

   
    
    
    
    
    
     


ProgressBar Demo


   
    

<Window x:Class="SimpleStyles.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="SimpleStyles"
  Background="#F8F8F8">
  <ScrollViewer>
    <WrapPanel>
      <HeaderedItemsControl Header="ProgressBar">
        <StackPanel>
          <ProgressBar HorizontalAlignment="Center" Margin="8" Value="20" />
          <ProgressBar HorizontalAlignment="Center" Margin="8" Value="90" />
        </StackPanel>
      </HeaderedItemsControl>

   
    </WrapPanel>
  </ScrollViewer>
</Window>

   
    
    
    
     


Print Without User Intervention


   
  
<Window x:Class="Printing.PrintWithoutUserIntervention"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="PrintWithoutUserIntervention" Height="300" Width="300">
    <Grid Margin="5">
      <Button Click="cmdPrint_Click">Print</Button>
    </Grid>
</Window>

//File:Window.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Printing;

namespace Printing
{
    public partial class PrintWithoutUserIntervention : System.Windows.Window
    {
        public PrintWithoutUserIntervention()
        {
            InitializeComponent();
        }

        private void cmdPrint_Click(object sender, RoutedEventArgs e)
        {
            PrintDialog dialog = new PrintDialog();            
            dialog.PrintQueue = LocalPrintServer.GetDefaultPrintQueue();            
            dialog.PrintVisual((Visual)sender, "Automatic Printout");
        }
    }
}

   
    
     


Print a WPF Visual


   
  

<Window x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1">
  <Grid>
    <Grid x:Name="VisualRoot">
      <Ellipse Fill="Blue" Height="300" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/>
      <TextBlock Text="A Printed Visual" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
    <Button Click="btnPrintVisual_Click" Content="Print" VerticalAlignment="Bottom"/>
  </Grid>
</Window>
//File:Window.xaml.cs
using System;
using System.Printing;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Xps;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
        private void btnPrintVisual_Click(object sender, RoutedEventArgs e)
        {
            Visual visual = new Grid();
            
            PrintDialog printDialog = new PrintDialog();

            if (printDialog.ShowDialog() != true)
            {
                return;
            }
            PrintQueue pq = printDialog.PrintQueue;
            Visual scaledVisual = ScaleVisual(visual, pq);
            
            XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(pq);

            xpsdw.Write(scaledVisual);
        }
        private Visual ScaleVisual(Visual v, PrintQueue pq)
        {
            ContainerVisual root = new ContainerVisual();
            const double inch = 96;

            double xMargin = 150;
            double yMargin = 100;

            PrintTicket pt = pq.UserPrintTicket;
            double printableWidth = pt.PageMediaSize.Width.Value;
            double printableHeight = pt.PageMediaSize.Height.Value;
            Console.WriteLine(printableWidth);
            Console.WriteLine(printableHeight);
            
            double xScale = 2;
            double yScale = 3;

            root.Children.Add(v);
            root.Transform = new MatrixTransform(xScale, 0, 0, yScale, xMargin, yMargin);

            return root;
        }
    }
}

   
    
     


Print Scaled Visual


   
  
<Window x:Class="Printing.PrintScaledVisual"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="PrintScaledVisual" Height="184" Width="269">
  <StackPanel>
    <Button Click="cmdPrint_Click">Print</Button>
  </StackPanel>
</Window>

//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Printing
{
    public partial class PrintScaledVisual : System.Windows.Window
    {
        public PrintScaledVisual()
        {
            InitializeComponent();
        }

        private void cmdPrint_Click(object sender, RoutedEventArgs e)
        {
            PrintDialog printDialog = new PrintDialog();
            if (printDialog.ShowDialog() == true)
            {
                Run run = new Run("This is a test.");
                TextBlock visual = new TextBlock(run);                
                visual.Margin = new Thickness(15);
                visual.TextWrapping = TextWrapping.Wrap;

                double zoom = 2;
                visual.LayoutTransform = new ScaleTransform(zoom / 100, zoom / 100);
                Size pageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
                visual.Measure(pageSize);
                visual.Arrange(new Rect(0, 0, pageSize.Width, pageSize.Height));
                printDialog.PrintVisual(visual, "A Scaled Drawing");
            }
        }
    }
}

   
    
     


Print Custom Page


   
  
<Window x:Class="Printing.PrintCustomPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="PrintCustomPage" Height="300" Width="300">
    <StackPanel>
      <TextBox Name="txtContent" Margin="3" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible">
        this is a test
      </TextBox>
      <Button Grid.Row="1" Margin="3" Padding="5" Click="cmdPrint_Click" VerticalAlignment="Top">Print</Button>
    </StackPanel>
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Globalization;

namespace Printing
{
    public partial class PrintCustomPage : System.Windows.Window
    {
        public PrintCustomPage()
        {
            InitializeComponent();
        }
        private void cmdPrint_Click(object sender, RoutedEventArgs e)
        {           
            PrintDialog printDialog = new PrintDialog();
            if (printDialog.ShowDialog() == true)
            {
                DrawingVisual visual = new DrawingVisual();
                using (DrawingContext dc = visual.RenderOpen())
                {
                    FormattedText text = new FormattedText(txtContent.Text,
                        CultureInfo.CurrentCulture, FlowDirection.LeftToRight,
                        new Typeface("Calibri"), 20, Brushes.Black);

                    text.MaxTextWidth = printDialog.PrintableAreaWidth / 2;
                    Point point = new Point(100,100);

                    dc.DrawText(text, point);

                    dc.DrawRectangle(null, new Pen(Brushes.Black, 1),
                        new Rect(200, 200, 50,50));
                }

                printDialog.PrintVisual(visual, "A Custom-Printed Page");
            }
        }
    }
}

   
    
     


PresentationTraceSources.SetTraceLevel(binding,PresentationTraceLevel.High);


   
  

<Window x:Class="WpfApplication1.Monitor"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=System"
    xmlns:debug="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="Monitor" Height="400" Width="400">
    <Grid>
        <ListView Name="listView1">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <WrapPanel>
                        <TextBlock Text="{Binding Path=Id}" MinWidth="80" />
                        <TextBlock Text="{Binding Path=ProcessName}" MinWidth="180" />
                        <TextBlock>
                                <TextBlock.Text>
                                    <Binding Path="WorkingSet" />
                                </TextBlock.Text>
                        </TextBlock>
                    </WrapPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Window>



//File:Window.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Diagnostics;

namespace WpfApplication1
{
    public partial class Monitor : Window
    {
        public Monitor()
        {
            InitializeComponent();
            BindProcessesToListView();
        }

        private void BindProcessesToListView()
        {
            ObjectDataProvider provider = new ObjectDataProvider();
            provider.ObjectType = typeof(Process);
            provider.MethodName = "GetProcesses";
            Binding binding = new Binding();
            binding.Source = provider;
            binding.Mode = BindingMode.OneWay;
            PresentationTraceSources.SetTraceLevel(binding,PresentationTraceLevel.High);
            listView1.SetBinding(ListView.ItemsSourceProperty, binding);
        }
    }
}