<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>.NET Meanderings - WPF</title>
    <link>http://www.dotnetconsult.co.uk/weblog2/</link>
    <description>Richard Blewett's wanderings around .NET</description>
    <language>en-us</language>
    <copyright>Richard Blewett</copyright>
    <lastBuildDate>Mon, 15 Dec 2008 21:01:53 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>richard@dotnetconsult.co.uk</managingEditor>
    <webMaster>richard@dotnetconsult.co.uk</webMaster>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=f79cea03-0cc7-48c4-9171-8ca69a42f2c5</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f79cea03-0cc7-48c4-9171-8ca69a42f2c5.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I spent a while working this one out and none of the google hits  showed me what
I needed so I thought I'd blog it here. When you hook the <font face="Courier New">Drop</font> event
how do you deal with multiple files being dropped? The <font face="Courier New">GetData("FileNameW")</font> member
only returns a single file name in the string array even if multiple files are being
dragged. <font face="Courier New">GetData("FileName")</font> returns a single file
name in 8.3 compatible munged form so that doesn't help. I looked in the help for <font face="Courier New">System.Windows.DataObject</font> and
it has a <font face="Courier New">GetFileDropList</font> member. However, it turns
out that the <font face="Courier New">DragDropEventArgs.Data</font> is an <font face="Courier New">IDataObject</font> not
a <font face="Courier New">DataObject</font>. So if you cast it to a <font face="Courier New">DataObject</font> you
get access to the file list
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (e.Data.GetFormats().Contains(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"FileDrop"</span>))<br />
{<br />
    DataObject dataObject <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> e.Data <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> DataObject;<br />
    StringCollection files <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   
if</span> (dataObject !<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>)<br />
    {<br />
        files <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> dataObject.GetFileDropList();<br />
    }<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   
else</span><br />
    {<br />
        <font color="#006400">// not sure if this
is necessary but its defensive coding</font><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">       
string</span>[] fileArray <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>[])e.Data.GetData(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"FileNameW"</span>);<br />
        files <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> StringCollection();<br />
        files.Add(fileArray[0]);<br />
    }<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   
foreach</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> file <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">in</span> files)<br />
    {<br />
        <font color="#006400">// process files</font><br /></span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   
}<br />
}</span>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <font face="Verdana" size="2">Hopefully
someone else looking how to do this will stumble across this blog post and save some
time</font>
            <br />
          </span>
        </p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=f79cea03-0cc7-48c4-9171-8ca69a42f2c5" />
      </body>
      <title>Dragging mulitple files in WPF</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f79cea03-0cc7-48c4-9171-8ca69a42f2c5.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f79cea03-0cc7-48c4-9171-8ca69a42f2c5.aspx</link>
      <pubDate>Mon, 15 Dec 2008 21:01:53 GMT</pubDate>
      <description>&lt;p&gt;
I spent a while working this one out and none of the google hits&amp;nbsp; showed me what
I needed so I thought I'd blog it here. When you hook the &lt;font face="Courier New"&gt;Drop&lt;/font&gt; event
how do you deal with multiple files being dropped? The &lt;font face="Courier New"&gt;GetData("FileNameW")&lt;/font&gt; member
only returns a single file name in the string array even if multiple files are being
dragged. &lt;font face="Courier New"&gt;GetData("FileName")&lt;/font&gt; returns&amp;nbsp;a&amp;nbsp;single&amp;nbsp;file
name in 8.3 compatible munged form so that doesn't help. I looked in the help for &lt;font face="Courier New"&gt;System.Windows.DataObject&lt;/font&gt; and
it has a &lt;font face="Courier New"&gt;GetFileDropList&lt;/font&gt; member. However, it turns
out that the &lt;font face="Courier New"&gt;DragDropEventArgs.Data&lt;/font&gt; is an &lt;font face="Courier New"&gt;IDataObject&lt;/font&gt; not
a &lt;font face="Courier New"&gt;DataObject&lt;/font&gt;. So if you cast it to a &lt;font face="Courier New"&gt;DataObject&lt;/font&gt; you
get access to the file list
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (e.Data.GetFormats().Contains(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"FileDrop"&lt;/span&gt;))&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; &amp;nbsp; DataObject dataObject &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; e.Data &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; DataObject;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; StringCollection files &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if&lt;/span&gt; (dataObject !&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; files &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; dataObject.GetFileDropList();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
else&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#006400&gt;// not sure if this
is necessary but its defensive coding&lt;/font&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
string&lt;/span&gt;[] fileArray &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;[])e.Data.GetData(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"FileNameW"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; files &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StringCollection();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; files.Add(fileArray[0]);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
foreach&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; file &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;in&lt;/span&gt; files)&lt;br&gt;
&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;&lt;font color=#006400&gt;// process files&lt;/font&gt;
&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Verdana size=2&gt;Hopefully
someone else looking how to do this will stumble across this blog post and save some
time&lt;/font&gt;
&lt;br&gt;
&lt;/p&gt;
&gt;&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=f79cea03-0cc7-48c4-9171-8ca69a42f2c5" /&gt;</description>
      <category>.NET;WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=3edac6dd-38a1-4e65-bf45-eff5bb358b8f</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,3edac6dd-38a1-4e65-bf45-eff5bb358b8f.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've added drag and drop support to the BlobExplorer (<a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx">announced
here</a>) so you can drag files from windows explorer into cloud blob storage
</p>
        <p>
Rather than maintain the application in multiple places all releases will now go to
the cloud <a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip">here</a></p>
        <p>
          <a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zi">
          </a> 
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=3edac6dd-38a1-4e65-bf45-eff5bb358b8f" />
      </body>
      <title>Drag and Drop in BlobExplorer</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,3edac6dd-38a1-4e65-bf45-eff5bb358b8f.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,3edac6dd-38a1-4e65-bf45-eff5bb358b8f.aspx</link>
      <pubDate>Mon, 15 Dec 2008 15:52:11 GMT</pubDate>
      <description>&lt;p&gt;
I've added drag and drop support to the BlobExplorer (&lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx"&gt;announced
here&lt;/a&gt;) so you can drag files from windows explorer into cloud blob storage
&lt;/p&gt;
&lt;p&gt;
Rather than maintain the application in multiple places all releases will now go to
the cloud &lt;a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zi"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=3edac6dd-38a1-4e65-bf45-eff5bb358b8f" /&gt;</description>
      <category>.NET;Azure;WPF;BlobExplorer</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I will finally submit to <a href="http://www.leastprivilege.com/">Dominick's</a> harrassment
and stop running Visual Studio elevated. I started doing it because I couldn't be
bothered to mess about with HttpCfg and netsh when writing self-hosted WCF apps exposed
over HTTP. Registering part of the HTTP namespace with http.sys requires admin privilege.
I could have sorted it out with a wildcard registration but never got round to it.
</p>
        <p>
Since writing the <a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx">BlobExplorer</a>, <a href="http://blogs.thinktecture.com/cweyer/">Christian</a> has
been my major source of feature requests. His latest was he wanted drag and drop.
Now I'm not an expert in WPF so I hit google to find out how to do it. And it seemed
really simple - just set <font face="Courier New">AllowDrop=true</font> on the UIElement
in question and handle the <font face="Courier New">Drop</font> event. But I just
couldn't get the app to accept drag events from Windows Explorer. After much frustration
I finally realised that the problem had nothing to do with my code but was rather
a security issue. the BlobExplorer was running elevated because I started it from
Visual Studio which was also running elevated. Elevated applications will not accept
drag events from non-elevated applications. 
</p>
        <p>
So I'm setting VS to run normally again and will do the proper thing with http.sys
for my WCF applications.
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a" />
      </body>
      <title>Running VS 2008 elevated has some downsides</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a.aspx</link>
      <pubDate>Mon, 15 Dec 2008 12:49:41 GMT</pubDate>
      <description>&lt;p&gt;
I will finally submit to &lt;a href="http://www.leastprivilege.com/"&gt;Dominick's&lt;/a&gt; harrassment
and stop running Visual Studio elevated. I started doing it because I couldn't be
bothered to mess about with HttpCfg and netsh when writing self-hosted WCF apps exposed
over HTTP. Registering part of the HTTP namespace with http.sys requires admin privilege.
I could have sorted it out with a wildcard registration but never got round to it.
&lt;/p&gt;
&lt;p&gt;
Since writing the &lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx"&gt;BlobExplorer&lt;/a&gt;, &lt;a href="http://blogs.thinktecture.com/cweyer/"&gt;Christian&lt;/a&gt; has
been my major source of feature requests. His latest was he wanted drag and drop.
Now I'm not an expert in WPF so I hit google to find out how to do it. And it seemed
really simple - just set &lt;font face="Courier New"&gt;AllowDrop=true&lt;/font&gt; on the UIElement
in question and handle the &lt;font face="Courier New"&gt;Drop&lt;/font&gt; event. But I just
couldn't get the app to accept drag events from Windows Explorer. After much frustration
I finally realised that the problem had nothing to do with my code but was rather
a security issue. the BlobExplorer was running elevated because I started it from
Visual Studio which was also running elevated. Elevated applications will not accept
drag events from non-elevated applications. 
&lt;/p&gt;
&lt;p&gt;
So I'm setting VS to run normally again and will do the proper thing with http.sys
for my WCF applications.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=f3ed1984-2bc7-4ea7-8c35-8f737b5ea79a" /&gt;</description>
      <category>.NET;Azure;WCF;WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=b77d9155-1ad4-43da-ae07-54cc72f32918</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b77d9155-1ad4-43da-ae07-54cc72f32918.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've uploaded an updated version of the BlobExplorer (first blogged about <a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx">here</a>).
It now uses a decent algorithm for determining MIME type (thanks <a href="http://blogs.thinktecture.com/cweyer/">Christian</a>)
and the blob list now retains a single entry when you update an existing blob
</p>
        <p>
Downloadable from my website here
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer12.zip">BlobExplorer12.zip
(55.28 KB)</a>
        </p>
        <p>
downloadable from Azure Blob Storage <a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip">here</a></p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=b77d9155-1ad4-43da-ae07-54cc72f32918" />
      </body>
      <title>Couple of fixes to BlobExplorer</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b77d9155-1ad4-43da-ae07-54cc72f32918.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b77d9155-1ad4-43da-ae07-54cc72f32918.aspx</link>
      <pubDate>Mon, 08 Dec 2008 09:33:00 GMT</pubDate>
      <description>&lt;p&gt;
I've uploaded an updated version of the BlobExplorer (first blogged about &lt;a href="http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx"&gt;here&lt;/a&gt;).
It now uses a decent algorithm for determining MIME type (thanks &lt;a href="http://blogs.thinktecture.com/cweyer/"&gt;Christian&lt;/a&gt;)
and the blob list now retains a single entry when you update an existing blob
&lt;/p&gt;
&lt;p&gt;
Downloadable from my website here
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer12.zip"&gt;BlobExplorer12.zip
(55.28 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
downloadable from Azure Blob Storage &lt;a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=b77d9155-1ad4-43da-ae07-54cc72f32918" /&gt;</description>
      <category>.NET;Azure;BlobExplorer;REST;WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=38b4889c-b9a6-4576-a944-b9286637dc14</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been digging around in <a href="http://www.azure.com">Azure</a> Storage recently
and as a side project I decided to write an explorer for Blob Storage. My UI skills
are not my strongest suit but I had fun dusting off my WPF knowledge (I have to thank <a href="http://andyclymer.blogspot.com/">Andy
Clymer</a>, Dave "no blog" Wheeler and <a href="http://www.interact-sw.co.uk/iangblog/">Ian
Griffiths</a> for nursemaiding me through some issues)
</p>
        <p>
Here is a screen shot of the explorer attached to development storage. You can also
attach it to your hosted Azure storage in the cloud
</p>
        <p>
          <img src="http://www.dotnetconsult.co.uk/weblog2/content/binary/blobexplorer.jpg" border="0" />
        </p>
        <p>
In the spirit of cloud storage and dogfooding I used the Blob Explorer to upload
itself into the cloud so you can find it <a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip?timeout=300">here</a></p>
        <p>
However, as Azure is a CTP environment I thought I would also upload it here
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer1.zip">BlobExplorer1.zip
(55.08 KB)</a>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer.zip">
          </a>
        </p>
        <p>
as, on the web, URIs live forever and my storage account URIs may not after
the CTP. I hope someone gets some mileage out of it - I certainly enjoyed writing
it. Comments, bug reports and feature requests are appreciated
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=38b4889c-b9a6-4576-a944-b9286637dc14" />
      </body>
      <title>Blob Storage Explorer</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,38b4889c-b9a6-4576-a944-b9286637dc14.aspx</link>
      <pubDate>Sat, 06 Dec 2008 22:00:19 GMT</pubDate>
      <description>&lt;p&gt;
I've been digging around in &lt;a href="http://www.azure.com"&gt;Azure&lt;/a&gt; Storage recently
and as a side project I decided to write an explorer for Blob Storage. My UI skills
are not my strongest suit but I had fun dusting off my WPF knowledge (I have to thank &lt;a href="http://andyclymer.blogspot.com/"&gt;Andy
Clymer&lt;/a&gt;, Dave "no blog" Wheeler&amp;nbsp;and &lt;a href="http://www.interact-sw.co.uk/iangblog/"&gt;Ian
Griffiths&lt;/a&gt; for nursemaiding me through some issues)
&lt;/p&gt;
&lt;p&gt;
Here is a screen shot of the explorer attached to development storage. You can also
attach it to your hosted Azure storage in the cloud
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.dotnetconsult.co.uk/weblog2/content/binary/blobexplorer.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
In the spirit of cloud storage and dogfooding I used the Blob&amp;nbsp;Explorer to upload
itself into the cloud so you can find it &lt;a href="http://dotnetconsult.blob.core.windows.net/tools/BlobExplorer.zip?timeout=300"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
However, as Azure is a CTP environment I thought I would also upload it here
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer1.zip"&gt;BlobExplorer1.zip
(55.08 KB)&lt;/a&gt;&lt;a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/BlobExplorer.zip"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
as, on the web, URIs live forever and my storage account&amp;nbsp;URIs&amp;nbsp;may not&amp;nbsp;after
the&amp;nbsp;CTP. I hope someone gets some mileage out of it - I certainly enjoyed writing
it. Comments, bug reports and feature requests are appreciated
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=38b4889c-b9a6-4576-a944-b9286637dc14" /&gt;</description>
      <category>.NET;Azure;BlobExplorer;REST;WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=b891bd0b-ad29-45cb-b8c7-1818d7886cb3</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891bd0b-ad29-45cb-b8c7-1818d7886cb3.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As promised, here are the demos from the precon myself and Dave Wheeler (get a blog
Dave) did at <a href="http://www.software-architect.co.uk/">Software Architect 2008</a>.
It was a fun day talking about security, WCF, WF, Windows Forms, WPF, Silverlight,
Ajax, ASP.NET MVC, LINQ and Oslo
</p>
        <p>
          <a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/DotNetForArchitects.zip">DotNetForArchitects.zip
(791.24 KB)</a>
        </p>
        <p>
There is a text file in the demos directory in the zip that explains the role of each
of the projects in the solution
</p>
        <p>
Edit: Updated the download link so hopefully the problems people have been experiencing
will be resolved
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=b891bd0b-ad29-45cb-b8c7-1818d7886cb3" />
      </body>
      <title>Demos from Software Architect 2008 Precon</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891bd0b-ad29-45cb-b8c7-1818d7886cb3.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,b891bd0b-ad29-45cb-b8c7-1818d7886cb3.aspx</link>
      <pubDate>Fri, 06 Jun 2008 21:02:07 GMT</pubDate>
      <description>&lt;p&gt;
As promised, here are the demos from the precon myself and Dave Wheeler (get a blog
Dave) did at &lt;a href="http://www.software-architect.co.uk/"&gt;Software Architect 2008&lt;/a&gt;.
It was a fun day talking about security, WCF, WF, Windows Forms, WPF, Silverlight,
Ajax, ASP.NET MVC, LINQ&amp;nbsp;and Oslo
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnetconsult.co.uk/weblog2/content/binary/DotNetForArchitects.zip"&gt;DotNetForArchitects.zip
(791.24 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There is a text file in the demos directory in the zip that explains the role of each
of the projects in the solution
&lt;/p&gt;
&lt;p&gt;
Edit: Updated the download link so hopefully the problems people have been experiencing
will be resolved
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=b891bd0b-ad29-45cb-b8c7-1818d7886cb3" /&gt;</description>
      <category>.NET;LINQ;Oslo;SilverLight;WCF;WF;WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetconsult.co.uk/weblog2/Trackback.aspx?guid=64b0fc0c-601c-4e7f-bc2a-83d233072a2e</trackback:ping>
      <pingback:server>http://www.dotnetconsult.co.uk/weblog2/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,64b0fc0c-601c-4e7f-bc2a-83d233072a2e.aspx</pingback:target>
      <dc:creator>Richard Blewett</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I'm here at <a href="http://www.microsoft.com/events/teched2007/default.mspx">TechEd
2007</a> enjoying the humidity of Orlando in June. I delivered a Precon on WCF and
WF on Sunday with <a href="http://www.masteringbiztalk.com">Jon Flanders</a> which
was a blast. <a href="http://www.julmar.com/blog/mark/">Mark Smith</a> who writes <a href="http://www.develop.com/us/training/course.aspx?id=378">our
WPF course</a> asked me to check out what I could find out about Acropolis -
a new framework for creating WPF applications. The <a href="http://windowsclient.net/acropolis/">Acropolis
website</a> went live on Monday and so I wandered over to the boothe to see what I
could find out. It came as quite a surprise that <a href="http://blogs.msdn.com/dphill/">Dave
Hill</a>, who i used to work with in the UK about 8 years ago, was on the stall.
Dave is the architect on Acropolis - its a small world. I had lunch with Dave and
it looks like they have some interesting ideas for helping to enforce separation between
the presentation layer and business funtionality in an application and it
is all expressed declaratively in XAML. If you're building smart clients in WPF its
definitely worth keeping an eye on.
</p>
        <img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=64b0fc0c-601c-4e7f-bc2a-83d233072a2e" />
      </body>
      <title>TechEd and Acropolis</title>
      <guid isPermaLink="false">http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,64b0fc0c-601c-4e7f-bc2a-83d233072a2e.aspx</guid>
      <link>http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,64b0fc0c-601c-4e7f-bc2a-83d233072a2e.aspx</link>
      <pubDate>Wed, 06 Jun 2007 15:15:23 GMT</pubDate>
      <description>&lt;p&gt;
So I'm here at &lt;a href="http://www.microsoft.com/events/teched2007/default.mspx"&gt;TechEd
2007&lt;/a&gt; enjoying the humidity of Orlando in June. I delivered a Precon on WCF and
WF on Sunday with &lt;a href="http://www.masteringbiztalk.com"&gt;Jon Flanders&lt;/a&gt;&amp;nbsp;which
was a blast. &lt;a href="http://www.julmar.com/blog/mark/"&gt;Mark Smith&lt;/a&gt;&amp;nbsp;who writes &lt;a href="http://www.develop.com/us/training/course.aspx?id=378"&gt;our
WPF course&lt;/a&gt;&amp;nbsp;asked me to check out what I could find out about Acropolis -
a new framework for creating WPF applications. The &lt;a href="http://windowsclient.net/acropolis/"&gt;Acropolis
website&lt;/a&gt; went live on Monday and so I wandered over to the boothe to see what I
could find out.&amp;nbsp;It came as quite a surprise that&amp;nbsp;&lt;a href="http://blogs.msdn.com/dphill/"&gt;Dave
Hill&lt;/a&gt;,&amp;nbsp;who i used to work with in the UK about 8 years ago, was on the stall.
Dave is the architect on Acropolis - its a small world. I had lunch with Dave and
it looks like they have some interesting ideas for helping to enforce separation between
the presentation layer and business funtionality&amp;nbsp;in an&amp;nbsp;application and it
is all expressed declaratively in XAML. If you're building smart clients in WPF its
definitely worth keeping an eye on.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetconsult.co.uk/weblog2/aggbug.ashx?id=64b0fc0c-601c-4e7f-bc2a-83d233072a2e" /&gt;</description>
      <category>.NET;WPF</category>
    </item>
  </channel>
</rss>