<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>ControlSystemWorks Blog - third-party</title>
    <link>http://www.controlsystemworks.com/blog/</link>
    <description>Of CSWorks and software development</description>
    <language>en-us</language>
    <copyright>ControlSystemWorks.com</copyright>
    <lastBuildDate>Mon, 19 Apr 2010 21:11:23 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>support@ControlSystemWorks.net</managingEditor>
    <webMaster>support@ControlSystemWorks.net</webMaster>
    <item>
      <trackback:ping>http://www.controlsystemworks.com/blog/Trackback.aspx?guid=bd94790d-4950-4407-94a4-9bd146090266</trackback:ping>
      <pingback:server>http://www.controlsystemworks.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.controlsystemworks.com/blog/PermaLink,guid,bd94790d-4950-4407-94a4-9bd146090266.aspx</pingback:target>
      <dc:creator>Sergey Sorokin</dc:creator>
      <wfw:comment>http://www.controlsystemworks.com/blog/CommentView,guid,bd94790d-4950-4407-94a4-9bd146090266.aspx</wfw:comment>
      <wfw:commentRss>http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bd94790d-4950-4407-94a4-9bd146090266</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="4">Resizable controls - what's the problem? </font>
        </p>
        <p>
To save HMI screen space, application developers may want to make some controls resizable.
Applying ScaleTransform is not a problem and is a good solution in many cases. See
Pipes and Tanks Demo for example - it uses ScaleTransform and redraws screen content
when a user changes browser window size. 
</p>
        <p>
Unfortunately, ScaleTransform is not an optimal solution when dealing with complex
UI elements, especially those containing some amount of text - some pieces may look
ugly, some may become too small to be useful. The only solution is to make complex
controls able to react to the 'SizeChanged' event and recalculate internal layout
at runtime. Latest version of Alarm Summary and Trend Control can do that, and this
post shows how application developers can use this functionality. 
</p>
        <p>
We will need a container control that lets user change its size, and a piece of code
that passes the changes to CSWorks controls. You can develop your own container control
(there are a lot of examples available in the web) or use an existing third-party
container control for that. I will use RadWindow from Telerik in this example - it
serves the purpose quite well. 
</p>
        <p>
          <font size="4">Resizable Alarm Demo </font>
        </p>
        <p>
1. Download Rad Controls for Silverlight trial package from www.telerik.com (DLLs
only). 
<br />
2. Unzip downloaded archive to "C:\Program Files\CSWorks\Demo\Src\tps\Telerik". Telerik
DLLs will be unpacked to "C:\Program Files\CSWorks\Demo\Src\tps\Telerik\Binaries\Silverlight\". 
<br />
3. Open Alarm Demo project ("C:\Program Files\CSWorks\Demo\Src\AlarmDemo\") in Visual
Studio. 
<br />
4. We will use RadWindow control implemented in Telerik.Windows.Controls.Navigation.dll.
Add Telerik.Windows.Controls.Navigation.dll and Telerik.Windows.Controls.dll to the
reference list for Alarm Demo project. 
<br />
5. Open Page.xaml file. Add 'telerik' namespace to the UserControl element: 
<br /><br /><font color="#0000ff" size="1">&lt;UserControl ...<br />
  xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"<br />
... &gt; </font><br /><br />
6. Replace control content with a grid that contains RawWindow that contains CSWorks
Alarm Summary, and add SizeChanged event handler for RadWindow: 
<br /><grid><br /><font color="#0000ff" size="1">&lt;Grid&gt;<br />
  &lt;telerik:RadWindow x:Name="radWindow" SizeChanged="OnSizeChanged"&gt;<br />
    &lt;telerik:RadWindow.Header&gt;<br />
      &lt;TextBlock Text="Alarm Demo"/&gt;<br />
    &lt;/telerik:RadWindow.Header&gt;<br />
    &lt;alarm:AlarmSummary ... /&gt;<br />
  &lt;/telerik:RadWindow&gt;<br />
&lt;/Grid&gt;</font><br /><br />
7. Open Page.xaml.cs file, implement SizeChanged event handler that adjusts AlarmSummary
height and width when RadWindow size is changed: 
</grid></p>
        <p>
          <grid>
            <font color="#0000ff" size="1">private void OnSizeChanged(object sender, SizeChangedEventArgs
e)<br />
{<br />
  GeneralTransform gtGlobal = alarmSummary.TransformToVisual(radWindow);<br />
  Point leftTopGlobal = gtGlobal.Transform(new Point(0, 0));<br /><br />
  alarmSummary.Height = radWindow.Height - radWindow.BorderThickness.Bottom
- leftTopGlobal.Y - 4.0;<br />
  alarmSummary.Width = radWindow.Width - leftTopGlobal.X * 2;<br />
}</font>
            <br />
            <br />
8. Update Loaded event handler so RadWindow shows itself after page is loaded:<br /><br /><font color="#0000ff" size="1">private void Page_Loaded(object sender, RoutedEventArgs
e)<br />
{<br />
  ...<br />
  radWindow.Show();<br />
}</font><br /><br />
9. Rebuild the project and run Alarm Demo from Start Menu. Resize RadWindow and watch
Alarm Summary changing its layout:
</grid>
        </p>
        <p>
          <grid>
            <a target="_blank" href="content/binary/2010-04-19-ResizableAlarm-big.gif">
              <img src="content/binary/2010-04-19-ResizableAlarm.gif" border="0" />
            </a>
          </grid>
        </p>
        <font size="4">Resizable Trend </font>
        <p>
        </p>
        <p>
You can do the same to CSWorks Trend control. 
</p>
        <p>
1. Open Trend Demo project ("C:\Program Files\CSWorks\Demo\Src\TrendDemo\TrendDemo.Sample.csproj") 
<br />
2. Add Telerik.Windows.Controls.Navigation.dll and Telerik.Windows.Controls.dll to
the reference list. 
<br />
3. Open MainPage.xaml file. Add 'telerik' namespace as shown above. 
<br />
4. Change xaml so RadWindow contains TrendControl: 
<br /><br /><font color="#0000ff" size="1">&lt;Grid&gt;<br />
  &lt;telerik:RadWindow x:Name="radWindow" SizeChanged="OnSizeChanged"&gt;<br />
    &lt;telerik:RadWindow.Header&gt;<br />
      &lt;TextBlock Text="Trend Demo"/&gt;<br />
    &lt;/telerik:RadWindow.Header&gt;<br />
    &lt;t:Trend ...&gt;<br />
      ...<br />
    &lt;/t:Trend&gt;<br />
  &lt;/telerik:RadWindow&gt;<br />
&lt;/Grid&gt;</font><br /><br />
5. Open MainPage.xanl.cs. Add OnSizeChanged handler:
</p>
        <p>
          <font color="#0000ff" size="1">private void OnSizeChanged(object sender, SizeChangedEventArgs
e)<br />
{<br />
  GeneralTransform gtGlobal = _demoTrend.TransformToVisual(radWindow);<br />
  Point leftTopGlobal = gtGlobal.Transform(new Point(0, 0));<br /><br />
  _demoTrend.Height = radWindow.Height - radWindow.BorderThickness.Bottom
- leftTopGlobal.Y - 4.0;<br />
  _demoTrend.Width = radWindow.Width - leftTopGlobal.X * 2;<br />
}</font>
          <br />
          <br />
6. Show RadWindow on startup:
</p>
        <p>
          <font color="#0000ff" size="1">void MainPage_Loaded(object sender, RoutedEventArgs
e)<br />
{<br />
  ...<br />
  radWindow.Show();<br />
}</font>
          <br />
          <br />
7. Rebuild the project and run Trend Demo from Start Menu. Resize RadWindow and watch
Trend control changing its layout: 
</p>
        <p>
          <br />
          <a target="_blank" href="content/binary/2010-04-19-ResizableTrend-big.gif">
            <img src="content/binary/2010-04-19-ResizableTrend.gif" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=bd94790d-4950-4407-94a4-9bd146090266" />
      </body>
      <title>Resizable Alarm Summary and Trend</title>
      <guid isPermaLink="false">http://www.controlsystemworks.com/blog/PermaLink,guid,bd94790d-4950-4407-94a4-9bd146090266.aspx</guid>
      <link>http://www.controlsystemworks.com/blog/2010/04/19/ResizableAlarmSummaryAndTrend.aspx</link>
      <pubDate>Mon, 19 Apr 2010 21:11:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font size="4"&gt;Resizable controls - what's the problem? &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
To save HMI screen space, application developers may want to make some controls resizable.
Applying ScaleTransform is not a problem and is a good solution in many cases. See
Pipes and Tanks Demo for example - it uses ScaleTransform and redraws screen content
when a user changes browser window size. 
&lt;/p&gt;
&lt;p&gt;
Unfortunately, ScaleTransform is not an optimal solution when dealing with complex
UI elements, especially those containing some amount of text - some pieces may look
ugly, some may become too small to be useful. The only solution is to make complex
controls able to react to the 'SizeChanged' event and recalculate internal layout
at runtime. Latest version of Alarm Summary and Trend Control can do that, and this
post shows how application developers can use this functionality. 
&lt;/p&gt;
&lt;p&gt;
We will need a container control that lets user change its size, and a piece of code
that passes the changes to CSWorks controls. You can develop your own container control
(there are a lot of examples available in the web) or use an existing third-party
container control for that. I will use RadWindow from Telerik in this example - it
serves the purpose quite well. 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="4"&gt;Resizable Alarm Demo &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
1. Download Rad Controls for Silverlight trial package from www.telerik.com (DLLs
only). 
&lt;br&gt;
2. Unzip downloaded archive to "C:\Program Files\CSWorks\Demo\Src\tps\Telerik". Telerik
DLLs will be unpacked to "C:\Program Files\CSWorks\Demo\Src\tps\Telerik\Binaries\Silverlight\". 
&lt;br&gt;
3. Open Alarm Demo project ("C:\Program Files\CSWorks\Demo\Src\AlarmDemo\") in Visual
Studio. 
&lt;br&gt;
4. We will use RadWindow control implemented in Telerik.Windows.Controls.Navigation.dll.
Add Telerik.Windows.Controls.Navigation.dll and Telerik.Windows.Controls.dll to the
reference list for Alarm Demo project. 
&lt;br&gt;
5. Open Page.xaml file. Add 'telerik' namespace to the UserControl element: 
&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;&amp;lt;UserControl ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"&lt;br&gt;
... &amp;gt; &lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
6. Replace control content with a grid that contains RawWindow that contains CSWorks
Alarm Summary, and add SizeChanged event handler for RadWindow: 
&lt;br&gt;
&lt;grid&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;&amp;lt;Grid&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;telerik:RadWindow x:Name="radWindow" SizeChanged="OnSizeChanged"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;telerik:RadWindow.Header&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Text="Alarm Demo"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/telerik:RadWindow.Header&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;alarm:AlarmSummary ... /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/telerik:RadWindow&amp;gt;&lt;br&gt;
&amp;lt;/Grid&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
7. Open Page.xaml.cs file, implement SizeChanged event handler that adjusts AlarmSummary
height and width when RadWindow size is changed:&amp;nbsp;
&lt;/grid&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;grid&gt;
&lt;font color="#0000ff" size="1"&gt;private void OnSizeChanged(object sender, SizeChangedEventArgs
e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;GeneralTransform gtGlobal = alarmSummary.TransformToVisual(radWindow);&lt;br&gt;
&amp;nbsp;&amp;nbsp;Point leftTopGlobal = gtGlobal.Transform(new Point(0, 0));&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;alarmSummary.Height = radWindow.Height - radWindow.BorderThickness.Bottom
- leftTopGlobal.Y - 4.0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;alarmSummary.Width = radWindow.Width - leftTopGlobal.X * 2;&lt;br&gt;
}&lt;/font&gt; 
&lt;br&gt;
&lt;br&gt;
8. Update Loaded event handler so RadWindow shows itself after page is loaded:&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;private void Page_Loaded(object sender, RoutedEventArgs
e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;&amp;nbsp;radWindow.Show();&lt;br&gt;
}&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
9. Rebuild the project and run Alarm Demo from Start Menu. Resize RadWindow and watch
Alarm Summary changing its layout:
&lt;/grid&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;grid&gt;
&lt;a target="_blank" href="content/binary/2010-04-19-ResizableAlarm-big.gif"&gt;&lt;img src="content/binary/2010-04-19-ResizableAlarm.gif" border="0"&gt;&lt;/a&gt; 
&lt;/grid&gt;
&lt;/p&gt;
&lt;font size="4"&gt;Resizable Trend &lt;/font&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
You can do the same to CSWorks Trend control. 
&lt;/p&gt;
&lt;p&gt;
1. Open Trend Demo project ("C:\Program Files\CSWorks\Demo\Src\TrendDemo\TrendDemo.Sample.csproj") 
&lt;br&gt;
2. Add Telerik.Windows.Controls.Navigation.dll and Telerik.Windows.Controls.dll to
the reference list. 
&lt;br&gt;
3. Open MainPage.xaml file. Add 'telerik' namespace as shown above. 
&lt;br&gt;
4. Change xaml so RadWindow contains TrendControl: 
&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;&amp;lt;Grid&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;telerik:RadWindow x:Name="radWindow" SizeChanged="OnSizeChanged"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;telerik:RadWindow.Header&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Text="Trend Demo"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/telerik:RadWindow.Header&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;t:Trend ...&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/t:Trend&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/telerik:RadWindow&amp;gt;&lt;br&gt;
&amp;lt;/Grid&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
5. Open MainPage.xanl.cs. Add OnSizeChanged handler:
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff" size="1"&gt;private void OnSizeChanged(object sender, SizeChangedEventArgs
e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;GeneralTransform gtGlobal = _demoTrend.TransformToVisual(radWindow);&lt;br&gt;
&amp;nbsp;&amp;nbsp;Point leftTopGlobal = gtGlobal.Transform(new Point(0, 0));&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;_demoTrend.Height = radWindow.Height - radWindow.BorderThickness.Bottom
- leftTopGlobal.Y - 4.0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;_demoTrend.Width = radWindow.Width - leftTopGlobal.X * 2;&lt;br&gt;
}&lt;/font&gt; 
&lt;br&gt;
&lt;br&gt;
6. Show RadWindow on startup:
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff" size="1"&gt;void MainPage_Loaded(object sender, RoutedEventArgs
e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;...&lt;br&gt;
&amp;nbsp;&amp;nbsp;radWindow.Show();&lt;br&gt;
}&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
7. Rebuild the project and run Trend Demo from Start Menu. Resize RadWindow and watch
Trend control changing its layout:&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;a target="_blank" href="content/binary/2010-04-19-ResizableTrend-big.gif"&gt;&lt;img src="content/binary/2010-04-19-ResizableTrend.gif" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=bd94790d-4950-4407-94a4-9bd146090266" /&gt;</description>
      <comments>http://www.controlsystemworks.com/blog/CommentView,guid,bd94790d-4950-4407-94a4-9bd146090266.aspx</comments>
      <category>demo</category>
      <category>third-party</category>
    </item>
    <item>
      <trackback:ping>http://www.controlsystemworks.com/blog/Trackback.aspx?guid=4e880e6a-bfd0-4e97-9914-d0d5cf246475</trackback:ping>
      <pingback:server>http://www.controlsystemworks.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.controlsystemworks.com/blog/PermaLink,guid,4e880e6a-bfd0-4e97-9914-d0d5cf246475.aspx</pingback:target>
      <dc:creator>Sergey Sorokin</dc:creator>
      <wfw:comment>http://www.controlsystemworks.com/blog/CommentView,guid,4e880e6a-bfd0-4e97-9914-d0d5cf246475.aspx</wfw:comment>
      <wfw:commentRss>http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4e880e6a-bfd0-4e97-9914-d0d5cf246475</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSWorks client framework is all about third-party UI components. As of this writing,
all major Silverlight component providers have come up with their versions of the
Gauge control. In this example, I will show how you can integrate Telerik and/or ComponentOne
gauge controls into CSWorks Pipes and Tanks Demo application. The result will look
like this:<br /><br /><img src="content/binary/2010-03-15-ThirdPartyGauges.png" /><br /><br />
Here are the steps to make it work.<br /><br />
1. Download Telerik Silverlight controls (dlls only) and ComponentOne Studio Trial
Package for Silverlight.<br />
2. Create a folder for third-party controls - C:\Program Files\CSWorks\ThirdParty.<br />
3. Unpack downloaded Telerik archive and install ComponentOne package.<br />
4. Copy Telerik assemblies (Telerik.Windows.Controls.Gauge.dll, Telerik.Windows.Controls.dll,
Telerik.Windows.Data.dll) and ComponentOne assemblies (C1.Silverlight.dll, C1.Silverlight.Gauge.dll)
to ThirdParty folder.<br />
5. Open C:\Program Files\CSWorks\Demo\Src\PipesAndTanksDemo\PipesAndTanksDemo.Sample.csproj
in Visual Studio.<br />
6. Add all copied third party assemblies to the project reference list.<br />
7. Open Page.xaml and add third-party namespaces to the namespace list:<br /><br /><font color="#0000ff" size="1">&lt;UserControl x:Class="CSWorks.Client.PipesAndTanksDemo.Page"<br />
  ...<br /><b>  xmlns:tcontrol="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Gauge"<br />
  xmlns:tgauge="clr-namespace:Telerik.Windows.Controls.Gauges;assembly=Telerik.Windows.Controls.Gauge"<br />
  xmlns:c1gauge="clr-namespace:C1.Silverlight.Gauge;assembly=C1.Silverlight.Gauge"</b><br />
  ...&gt;</font><br /><br />
8. Add gauge controls to the page and bind them to LeftPumpSpeed and RightPumpSpeed
data items:<br /><br /><font color="#0000ff" size="1">&lt;controls:TabItem Header="HMI Controls View"&gt;<br />
    &lt;Canvas&gt;<br />
        ...<br />
        &lt;Grid ...&gt;<br />
            ...<br />
            &lt;Border ...&gt;<br />
              ...<br />
            &lt;/Border&gt;<br /><br /><b>            &lt;!-- Telerik
Gauge for left pump --&gt;<br />
            &lt;Border Grid.Row="1"
Grid.Column="5" Grid.RowSpan="1" Grid.ColumnSpan="3" Background="White" BorderBrush="Black"
BorderThickness="1" CornerRadius="5" Padding="5,0,5,0" Margin="0,10,0,-10"&gt;<br />
               
&lt;StackPanel Orientation="Vertical"&gt;<br />
                   
&lt;TextBlock Text="Telerik Gauge" Foreground="Black" FontSize="8" HorizontalAlignment="Center"/&gt;<br />
                   
&lt;tcontrol:RadGauge x:Name="radGauge" VerticalAlignment="Bottom" &gt;<br />
                       
&lt;tgauge:RadialGauge  &gt;<br />
                           
&lt;tgauge:RadialScale Min="0" Max="200" LabelRotationMode="None" FontSize="7"&gt;<br />
                               
&lt;tgauge:RadialScale.Label&gt;<br />
                                   
&lt;tgauge:LabelProperties FontSize="4.5"/&gt;<br />
                               
&lt;/tgauge:RadialScale.Label&gt;<br />
                               
&lt;tgauge:RangeList&gt;<br />
                                   
&lt;tgauge:RadialRange Min="0" Max="100" StartWidth="0.05" EndWidth="0.05" Background="Green"/&gt;<br />
                                   
&lt;tgauge:RadialRange Min="100" Max="160" StartWidth="0.05" EndWidth="0.05" Background="Orange"/&gt;<br />
                                   
&lt;tgauge:RadialRange Min="160" Max="200" StartWidth="0.05" EndWidth="0.05" Background="Red"
/&gt;<br />
                               
&lt;/tgauge:RangeList&gt;<br />
                               
&lt;tgauge:IndicatorList&gt;<br />
                                   
&lt;tgauge:Needle Value="{Binding Value, Mode=OneWay, Source={StaticResource LeftPumpSpeed}}"/&gt;<br />
                               
&lt;/tgauge:IndicatorList&gt;<br />
                           
&lt;/tgauge:RadialScale&gt;<br />
                       
&lt;/tgauge:RadialGauge&gt;<br />
                   
&lt;/tcontrol:RadGauge&gt;<br />
                   
&lt;TextBlock Text="rpm" Foreground="White" FontSize="7" HorizontalAlignment="Center"
VerticalAlignment="Bottom"  Margin="0,-30,0,30"/&gt;<br />
               
&lt;/StackPanel&gt;<br />
            &lt;/Border&gt;<br /><br />
            &lt;!-- ComponentOne
Gauge for right pump --&gt;<br />
            &lt;Border Grid.Row="1"
Grid.Column="9" Grid.RowSpan="1" Grid.ColumnSpan="3" Background="White" BorderBrush="Black"
BorderThickness="1" CornerRadius="5" Padding="5,0,5,0" Margin="0,10,0,-10"&gt;<br />
               
&lt;StackPanel Orientation="Vertical"&gt;<br />
                   
&lt;TextBlock Text="C1 Gauge" Foreground="Black" FontSize="8" HorizontalAlignment="Center"/&gt;<br />
                   
&lt;c1gauge:C1RadialGauge  Minimum="0" Maximum="200" Value="{Binding Value, Mode=OneWay,
Source={StaticResource RightPumpSpeed}}"&gt;<br />
                       
&lt;c1gauge:C1GaugeLabel Interval="20" Foreground="Black" Format="#" FontSize="6"
FontWeight="200" Location="0.85"/&gt;<br />
                       
&lt;c1gauge:C1GaugeRange From="0" To="100"  Fill="Green" Location="0.45"/&gt;<br />
                       
&lt;c1gauge:C1GaugeRange From="100" To="160"  Fill="Orange" Location="0.45"/&gt;<br />
                       
&lt;c1gauge:C1GaugeRange From="160" To="200"  Fill="Red" Location="0.45"/&gt;<br />
                       
&lt;c1gauge:C1GaugeMark Interval="20" /&gt;<br />
                   
&lt;/c1gauge:C1RadialGauge&gt;<br />
                   
&lt;TextBlock Text="rpm" Foreground="Black" FontSize="7" HorizontalAlignment="Center"
VerticalAlignment="Bottom"  Margin="0,-30,0,30"/&gt;<br />
               
&lt;/StackPanel&gt;<br />
            &lt;/Border&gt;</b><br /><br />
            &lt;TextBlock Text="All
UI elements ..." .../&gt;<br />
          &lt;/Grid&gt;<br />
          ...<br />
    &lt;/Canvas&gt;<br />
&lt;/controls:TabItem&gt;</font><br /><br />
9. Build the project and start Pipes and Tanks Demo from your start menu. Enjoy professional-looking
controls in action.
</p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=4e880e6a-bfd0-4e97-9914-d0d5cf246475" />
      </body>
      <title>Using third-party controls</title>
      <guid isPermaLink="false">http://www.controlsystemworks.com/blog/PermaLink,guid,4e880e6a-bfd0-4e97-9914-d0d5cf246475.aspx</guid>
      <link>http://www.controlsystemworks.com/blog/2010/03/15/UsingThirdpartyControls.aspx</link>
      <pubDate>Mon, 15 Mar 2010 17:47:19 GMT</pubDate>
      <description>&lt;p&gt;
CSWorks client framework is all about third-party UI components. As of this writing,
all major Silverlight component providers have come up with their versions of the
Gauge control. In this example, I will show how you can integrate Telerik and/or ComponentOne
gauge controls into CSWorks Pipes and Tanks Demo application. The result will look
like this:&lt;br&gt;
&lt;br&gt;
&lt;img src="content/binary/2010-03-15-ThirdPartyGauges.png"&gt;
&lt;br&gt;
&lt;br&gt;
Here are the steps to make it work.&lt;br&gt;
&lt;br&gt;
1. Download Telerik Silverlight controls (dlls only) and ComponentOne Studio Trial
Package for Silverlight.&lt;br&gt;
2. Create a folder for third-party controls - C:\Program Files\CSWorks\ThirdParty.&lt;br&gt;
3. Unpack downloaded Telerik archive and install ComponentOne package.&lt;br&gt;
4. Copy Telerik assemblies (Telerik.Windows.Controls.Gauge.dll, Telerik.Windows.Controls.dll,
Telerik.Windows.Data.dll) and ComponentOne assemblies (C1.Silverlight.dll, C1.Silverlight.Gauge.dll)
to ThirdParty folder.&lt;br&gt;
5. Open C:\Program Files\CSWorks\Demo\Src\PipesAndTanksDemo\PipesAndTanksDemo.Sample.csproj
in Visual Studio.&lt;br&gt;
6. Add all copied third party assemblies to the project reference list.&lt;br&gt;
7. Open Page.xaml and add third-party namespaces to the namespace list:&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;&amp;lt;UserControl x:Class="CSWorks.Client.PipesAndTanksDemo.Page"&lt;br&gt;
&amp;nbsp; ...&lt;br&gt;
&lt;b&gt;&amp;nbsp; xmlns:tcontrol="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Gauge"&lt;br&gt;
&amp;nbsp; xmlns:tgauge="clr-namespace:Telerik.Windows.Controls.Gauges;assembly=Telerik.Windows.Controls.Gauge"&lt;br&gt;
&amp;nbsp; xmlns:c1gauge="clr-namespace:C1.Silverlight.Gauge;assembly=C1.Silverlight.Gauge"&lt;/b&gt;
&lt;br&gt;
&amp;nbsp; ...&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
8. Add gauge controls to the page and bind them to LeftPumpSpeed and RightPumpSpeed
data items:&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff" size="1"&gt;&amp;lt;controls:TabItem Header="HMI Controls View"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Canvas&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Grid ...&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Border ...&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Border&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Telerik
Gauge for left pump --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Border Grid.Row="1"
Grid.Column="5" Grid.RowSpan="1" Grid.ColumnSpan="3" Background="White" BorderBrush="Black"
BorderThickness="1" CornerRadius="5" Padding="5,0,5,0" Margin="0,10,0,-10"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;StackPanel Orientation="Vertical"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;TextBlock Text="Telerik Gauge" Foreground="Black" FontSize="8" HorizontalAlignment="Center"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tcontrol:RadGauge x:Name="radGauge" VerticalAlignment="Bottom" &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialGauge&amp;nbsp; &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialScale Min="0" Max="200" LabelRotationMode="None" FontSize="7"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialScale.Label&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:LabelProperties FontSize="4.5"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tgauge:RadialScale.Label&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RangeList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialRange Min="0" Max="100" StartWidth="0.05" EndWidth="0.05" Background="Green"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialRange Min="100" Max="160" StartWidth="0.05" EndWidth="0.05" Background="Orange"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:RadialRange Min="160" Max="200" StartWidth="0.05" EndWidth="0.05" Background="Red"
/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tgauge:RangeList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:IndicatorList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;tgauge:Needle Value="{Binding Value, Mode=OneWay, Source={StaticResource LeftPumpSpeed}}"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tgauge:IndicatorList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tgauge:RadialScale&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tgauge:RadialGauge&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/tcontrol:RadGauge&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;TextBlock Text="rpm" Foreground="White" FontSize="7" HorizontalAlignment="Center"
VerticalAlignment="Bottom"&amp;nbsp; Margin="0,-30,0,30"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/StackPanel&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Border&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ComponentOne
Gauge for right pump --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Border Grid.Row="1"
Grid.Column="9" Grid.RowSpan="1" Grid.ColumnSpan="3" Background="White" BorderBrush="Black"
BorderThickness="1" CornerRadius="5" Padding="5,0,5,0" Margin="0,10,0,-10"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;StackPanel Orientation="Vertical"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;TextBlock Text="C1 Gauge" Foreground="Black" FontSize="8" HorizontalAlignment="Center"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1RadialGauge&amp;nbsp; Minimum="0" Maximum="200" Value="{Binding Value, Mode=OneWay,
Source={StaticResource RightPumpSpeed}}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1GaugeLabel Interval="20" Foreground="Black" Format="#" FontSize="6"
FontWeight="200" Location="0.85"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1GaugeRange From="0" To="100"&amp;nbsp; Fill="Green" Location="0.45"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1GaugeRange From="100" To="160"&amp;nbsp; Fill="Orange" Location="0.45"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1GaugeRange From="160" To="200"&amp;nbsp; Fill="Red" Location="0.45"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;c1gauge:C1GaugeMark Interval="20" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/c1gauge:C1RadialGauge&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;TextBlock Text="rpm" Foreground="Black" FontSize="7" HorizontalAlignment="Center"
VerticalAlignment="Bottom"&amp;nbsp; Margin="0,-30,0,30"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/StackPanel&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Border&amp;gt;&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text="All
UI elements ..." .../&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Canvas&amp;gt;&lt;br&gt;
&amp;lt;/controls:TabItem&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
9. Build the project and start Pipes and Tanks Demo from your start menu. Enjoy professional-looking
controls in action.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=4e880e6a-bfd0-4e97-9914-d0d5cf246475" /&gt;</description>
      <comments>http://www.controlsystemworks.com/blog/CommentView,guid,4e880e6a-bfd0-4e97-9914-d0d5cf246475.aspx</comments>
      <category>demo</category>
      <category>third-party</category>
    </item>
  </channel>
</rss>