<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title>WPF, Silverlight, XAML - Norbert Eder - Graz - Living .NET</title>
		<link>http://blog.norberteder.com/index.php</link>
		<description><![CDATA[Copyright (c) 2010 by Norbert Eder]]></description>
		<image>
			<url>http://blog.norberteder.com/interface/feed.png</url>
			<link>http://blog.norberteder.com/index.php</link>
			<title>WPF, Silverlight, XAML - Norbert Eder - Graz - Living .NET</title>
			<description><![CDATA[WPF, Silverlight, XAML - Norbert Eder - Graz - Living .NET]]></description>
		</image>
		<copyright>Norbert Eder</copyright>
		<managingEditor>csharp@gmx.at (Norbert Eder)</managingEditor>
		<language>de-DE</language>
		<generator>SPHPBLOG 0.4.5</generator>
		<item>
			<title>Silverlight: Automatische Selektion einer TextBox bei Fokuserhalt</title>
			<link>http://blog.norberteder.com/index.php?entry=entry100217-095834</link>
			<description><![CDATA[Eine häufige Anforderung: Erhält eine TextBox den Fokus, soll der Inhalt ganzheitlich selektiert werden. Dafür gibt es keine eigene Eigenschaft, die verwendet werden könnte. Es gibt lediglich die Methoden <i>Select</i> (für die Auswahl eines bestimmten Bereichs) oder <i>SelectAll</i> für die Auswahl des gesamten Textes.<br /><br />Die erste Idee wäre nun die Prüfung der Codebehind auf Änderungen des Fokuses inklusive Behandlung. Dies ist aber weder eine wiederverwendbare Lösung, noch ist sie sauber zu nennen.<br /><br />Statt dessen bietet sich die Verwendung von Attached Properties an. Wir erstellen dazu eine eigene Klasse, welche eine Dependency Property und die entsprechenden Getter und Setter anbietet. Diese beschreiben, ob die vollständige Auswahl aktiviert ist oder nicht. Bei einer Änderung der Eigenschaft wird geprüft, welcher Wert gesetzt wurde. Wurde sie auf <i>true</i> gesetzt, wird das Ereignis <i>GotFocus</i> abonniert, andernfalls wird dieses Abonnement wieder gelöst. Im entsprechenden Ereignishandler wird nun das angedockte Element über den <i>FocusManager</i> bezogen und der vorhandene Text selektiert.<br />
<pre class="csharpcode">
<span class="kwrd">public</span> <span class="kwrd">class</span> TextBoxSelector
{
    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">readonly</span> DependencyProperty SelectAllOnFocusProperty =
        DependencyProperty.RegisterAttached(
            <span class="str">"SelectAllOnFocus"</span>, 
            <span class="kwrd">typeof</span>(<span class="kwrd">bool</span>), 
            <span class="kwrd">typeof</span>(TextBoxSelector), 
            <span class="kwrd">new</span> PropertyMetadata(OnSelectAllOnFocusPropertyChanged));

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> OnSelectAllOnFocusPropertyChanged(
        DependencyObject sender, 
        DependencyPropertyChangedEventArgs e)
    {
        FrameworkElement element = sender <span class="kwrd">as</span> FrameworkElement;
        <span class="kwrd">if</span> (element != <span class="kwrd">null</span>)
        {
            <span class="kwrd">if</span> ((<span class="kwrd">bool</span>)e.NewValue)
                element.GotFocus += OnFocus;
            <span class="kwrd">else</span>
                element.GotFocus -= OnFocus;
            
        }
    }

    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> GetSelectAllOnFocus(
        DependencyObject o)
    {
        <span class="kwrd">return</span> (<span class="kwrd">bool</span>)o.GetValue(SelectAllOnFocusProperty);
    }

    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> SetSelectAllOnFocus(
        DependencyObject o, 
        <span class="kwrd">bool</span> selectAll)
    {
        o.SetValue(SelectAllOnFocusProperty, selectAll);
    }

    <span class="kwrd">static</span> <span class="kwrd">void</span> OnFocus(<span class="kwrd">object</span> sender, RoutedEventArgs e)
    {
        TextBox focusedTextBox = 
            FocusManager.GetFocusedElement() <span class="kwrd">as</span> TextBox;
        <span class="kwrd">if</span> (focusedTextBox != <span class="kwrd">null</span>)
        {
            focusedTextBox.SelectAll();
        }
    }
}</pre>
<br />Für die Verwendung ist die eben erstellte Klasse per XML Namespace ins XAML einzubinden:<br />
<pre class="csharpcode">
xmlns:ui="clr-namespace:SelectionDemo.Helper"</pre>
<br />Für die Einbindung gibt es nun mehrere Möglichkeiten. Zum einen ist es möglich, die Attachted Property direkt auf jeder TextBox zu setzen, und auf <i>true</i> zu stellen, für welche diese Funktionalität Anwendung finden sollte. Allerdings ist es auch möglich, dies auf einem Panel bzw. einem beliebigen Container zu setzen. Diese Einstellung bezieht sich dann auf alle Kinder vom Typ <i>TextBox</i>:<br />
<pre class="csharpcode">
<span class="kwrd">&lt;</span><span class="html">Grid</span> 
  <span class="attr">Grid</span>.<span class="attr">Row</span><span class="kwrd">="0"</span> 
  <span class="attr">Grid</span>.<span class="attr">Column</span><span class="kwrd">="0"</span>
  <span class="attr">ui:TextBoxSelector</span>.<span class="attr">SelectAllOnFocus</span><span class="kwrd">="true"</span><span class="kwrd">&gt;</span>

  <span class="kwrd">&lt;</span><span class="html">TextBox</span> <span class="attr">Text</span><span class="kwrd">="{Binding FirstName}"</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">TextBox</span> <span class="attr">Text</span><span class="kwrd">="{Binding LastName}"</span><span class="kwrd">/&gt;</span>

<span class="kwrd">&lt;/</span><span class="html">Grid</span><span class="kwrd">&gt;</span></pre>
<br />Attached Properties sind eine gute Möglichkeit, zusätzliche Funktionalitäten unter zu bringen, ohne Codebehind für eine View schreiben zu müssen bzw. den Einsatz von entsprechenden Patterns zu unterstützen. Dieses Beispiel zeigt, wie einfach es eigentlich ist.<br />]]></description>
			<category>.NET, WPF, Silverlight</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry100217-095834</guid>
			<author>Norbert Eder</author>
			<pubDate>Wed, 17 Feb 2010 08:58:34 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=10&amp;m=02&amp;entry=entry100217-095834</comments>
		</item>
		<item>
			<title>Das war der WPF/Silverlight Community Day 2010</title>
			<link>http://blog.norberteder.com/index.php?entry=entry100131-185247</link>
			<description><![CDATA[<img src="http://blog.norberteder.com/images/wpf_silverlight_cd2010_logo.png" width=150 height=103 border=0 alt='' id="img_float_left">Am Freitag, dem 29. Januar 2010, fand in <b>Graz</b> der erste <a href="http://communityday.wpf-blogger.com" target="_blank" >WPF/Silverlight Community Day</a> statt. Einen ganzen Tag lang standen die Windows Presentation Foundation und Silverlight im Vordergrund. Nicht ganz 20 Personen fanden sich ein, um Vorträgen zu lauschen und Erfahrungen untereinander auszutauschen.<br /><br />Insgesamt standen vier Vorträge auf dem Programm:<br /><br />In <b>WPF 4 - Neuerungen im Überblick</b> zeigte <a href="http://blog.norberteder.com" target="_blank" >Norbert Eder</a> wichtige Neuerungen der kommenden Version, angereichert um Beispiele, welche diese verdeutlichten.<br /><br /><b>Silverlight 4 - Neuerungen im Überblick</b>, gehalten von Mario Meir-Huber, brachte die neuen Features von Silverlight 4 unters Volk. Auch hier wurden zahlreiche Beispiele gezeigt, welche die Funktionalitäten veranschaulichen und die Mächtigkeit von Silverlight 4 aufzeigen sollten.<br /><br />Nach einem gemütlichen Mittagessen wurde der Nachmittag eingeläutet.<br /><br /><a href="http://blog.norberteder.com" target="_blank" >Norbert Eder</a> gab in <b>WPF - MVVM verwenden</b> einen Überblick über das MVVM-Pattern und ging dabei auch auf eine fortgeschrittene Architektur, basierende auf diesem Pattern, ein. In einem Live-Coding wurde die grundsätzliche Trennung der Zuständigkeiten gezeigt und einige wichtige Aspekte mit dem Auditorium diskutiert.<br /><br />Den Abschluss machte Mario Meir-Huber mit seiner Session über <b>Silverlight 4 Line of Business Applications mit den .NET RIA Services</b>. Dabei handelte es sich um eine reine Praxis-Session in der anhand eines einfachen Beispiels die Zusammenarbeit beider Technologien demonstriert und diskutiert wurde.<br /><br />Nach den Sessions blieb noch genügend Zeit für ein ausgeprägtes Socializing, welches von den Teilnehmern ausreichend genutzt wurde. So wurden einzelne Thematiken in Gruppen gesprochen, als auch aus der täglichen Praxis (inklusive auftretender Probleme) berichtet.<br /><br />Schließlich ließen es sich einige nicht nehmen, an der Abendveranstaltung teilzunehmen und gemeinsam auf einen erfolgreichen Tag anzustoßen.<br /><br />Als einer der Organisatoren möchte ich mich recht herzlich bei allen Teilnehmern für ihre Anwesenheit und angeregte Diskussionen und Gespräche bedanken. <br /><br />Die Folien der einzelnen Sessions finden sich online auf der Veranstaltungs-Seite:<br /><a href="http://communityday.wpf-blogger.com/2010Graz.Downloads.ashx" target="_blank" >WPF/Silverlight Community Day - Session Slides</a><br />]]></description>
			<category>.NET, WPF, Silverlight, Community</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry100131-185247</guid>
			<author>Norbert Eder</author>
			<pubDate>Sun, 31 Jan 2010 17:52:47 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=10&amp;m=01&amp;entry=entry100131-185247</comments>
		</item>
		<item>
			<title>Unterstützung ist gefragt - Eine gute Tat im neuen Jahr</title>
			<link>http://blog.norberteder.com/index.php?entry=entry100108-074005</link>
			<description><![CDATA[<b>Mario Meir-Huber</b> hat für die Mix10 einen Beitrag <a href="http://visitmix.com/opencallvote/Entry?entryId=MICROS019" target="_blank" >Microsoft Surface goes social – a research project at the University of Linz</a> eingereicht und hofft nun natürlich, dass er diesen auch vortragen kann.<br /><br />Dazu braucht er unsere Stützung durch ein Voting, damit er auch noch die letzte Runde, welche bis <b>15. Januar</b> dauert, schafft.<br /><br />Wer ihn dahingehend unterstützen möchte, hätte folgende Schritte zu tun:<br />
<ol>
  <li>Auf diese Seite gehen: <a href="http://visitmix.com/opencallvote/" target="_blank">http://visitmix.com/opencallvote/</a></li>
  <li>Im Suchfeld nach "Mario Meir-Huber" suchen und dann auf "Add This Entry to Ballot" klicken (Link ist unten)</li>
  <li>Dann auf "Submit Your Ballot" im rechten Feld klicken.</li>
</ol>
<br />Vielen Dank für die Unterstützung und es würde mich persönlich sehr freuen, könnte Mario als Speaker auf der Mix teilnehmen. Österreich wäre dadurch sicherlich gut vertreten.<br />]]></description>
			<category>.NET, WPF, Internet, Community</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry100108-074005</guid>
			<author>Norbert Eder</author>
			<pubDate>Fri, 08 Jan 2010 06:40:05 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=10&amp;m=01&amp;entry=entry100108-074005</comments>
		</item>
		<item>
			<title>Prosit 2010</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091231-122909</link>
			<description><![CDATA[Ich möchte allen meinen Lesern, Unterstützern und Freunden einen guten Rutsch ins neue Jahr wünschen. Möge es von Erfolg, Glück und vor allem Gesundheit geprägt sein.<br /><br />Auf 2010 freue ich mich schon ganz besonders, stehen doch einige wichtige Termine/Änderungen an. So wird sich auch mein Privatleben gehörig ändern - mehr dazu aber zu gegebener Zeit. <br /><br />Auch im Bereich Windows <b>Presentation Foundation</b> und <b>Silverlight</b> steht einiges auf dem Programm - auch das erfüllt mich bereits mit Vorfreude .<br /><br />Ein herzliches Dankeschön möchte ich auch <b>Microsoft</b> aussprechen. Dafür, dass ich 2009 zum zweiten Mal den <b>Most Valuable Professional</b> verliehen bekam. Danke sehr.<br /><br />Ein weiteres Dankeschön gebührt auch Rolf und Max von <b>Microsoft Österreich</b>. Danke für die Möglichkeit, offen mit euch über mir wichtige Themen sprechen zu können.<br /><br />Insgesamt kann ich auf ein schönes Jahr 2009 zurück blicken, auf viele nette Menschen, die ich kennen lernen durfte, erfolgreiche Projekte und vielen gesammelten Erfahrungen. <br /><br />So blicke ich mit freudiger Erwartung auf das kommende Jahr und wünsche euch allen ein gutes neues Jahr.<br />]]></description>
			<category>Blog-Intern</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091231-122909</guid>
			<author>Norbert Eder</author>
			<pubDate>Thu, 31 Dec 2009 11:29:09 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091231-122909</comments>
		</item>
		<item>
			<title>Impressionen vom .NET Open Space Wien 2009</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091223-150346</link>
			<description><![CDATA[Ich konnte ja leider nur einen der beiden Tage des  <a href="http://wien.netopenspace.de" target="_blank" >.NET Open Space Wien 2009</a> bei der Veranstaltung sein, durfte dann aber gleich ein wenig über WPF, Silverlight und Sketchflow plaudern.<br /><br /><img src="http://blog.norberteder.com/images/NetOpenSpace2009Wien01.jpg" width=400 height=300 border=0 alt=''><br /><br /><img src="http://blog.norberteder.com/images/NetOpenSpace2009Wien02.jpg" width=400 height=300 border=0 alt=''><br /><br /><img src="http://blog.norberteder.com/images/NetOpenSpace2009Wien03.jpg" width=400 height=300 border=0 alt=''><br /><br />Weitere Fotos werden demnächst folgen.<br />]]></description>
			<category>.NET, WPF, Silverlight</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091223-150346</guid>
			<author>Norbert Eder</author>
			<pubDate>Wed, 23 Dec 2009 14:03:46 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091223-150346</comments>
		</item>
		<item>
			<title>Nur noch wenige Tage: Multi-Touch Netbook und andere coole Preise gewinnen mit Windows Azure</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091221-092943</link>
			<description><![CDATA[<img src="http://blog.norberteder.com/images/120x240_WindowsAzure_DE.gif" width=120 height=240 border=0 alt='' id="img_float_left"> Die Aufgabe beim <a href="http://go.microsoft.com/?linkid=9700950" target="_blank" >Azure Now Gewinnspiel</a> ist es, eine eigene Windows Azure Demo-Domäne einzurichten und dort eine Cloud Computing-Anwendung online zu stellen – nicht mehr. Das kann eine eigene Web-Anwendung sein oder ein Test-Projekt, das man bei Microsoft herunterladen kann. Dafür braucht man nicht länger als 15 Minuten und sichert sich hoffentlich noch ein schönes Weihnachtsgeschenk.<br /><br />Das Gewinnspiel findet vom <b>10.12.2009</b> bis zum <b>31.12.2009</b> statt.<br /><br />Alle Details, weiterführende Tutorials und Informationen zum Gewinnspiel findet Ihr hier: <a href="http://go.microsoft.com/?linkid=9700950" target="_blank" >AzureNow Gewinnspiel – Jetzt teilnehmen!</a>]]></description>
			<category>.NET, Internet, Community</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091221-092943</guid>
			<author>Norbert Eder</author>
			<pubDate>Mon, 21 Dec 2009 08:29:43 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091221-092943</comments>
		</item>
		<item>
			<title>Webcam per Silverlight verwenden</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091220-132026</link>
			<description><![CDATA[Silverlight 4 macht die Verwendung von einigen Features überhaupt erst möglich bzw. viel einfacher als bisher gewohnt. Dieses Beispiel zeit, wie einfach auf eine installierte Webcam zugegriffen werden kann.<br /><br />Dazu wird eine einfache Oberfläche benötigt, die sich in diesem Fall aus einem Grid, einem Rectangle und zwei Buttons zum Aktivieren und Deaktieren der Webcam zusammen setzt:<br />
<pre class="csharpcode">
<span class="kwrd">&lt;</span><span class="html">Grid</span> <span class="attr">x:Name</span><span class="kwrd">="LayoutRoot"</span> <span class="attr">Background</span><span class="kwrd">="White"</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">Grid.RowDefinitions</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">RowDefinition</span> <span class="attr">Height</span><span class="kwrd">="*"</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">RowDefinition</span> <span class="attr">Height</span><span class="kwrd">="Auto"</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">Grid.RowDefinitions</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">Grid.ColumnDefinitions</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">ColumnDefinition</span> <span class="attr">Width</span><span class="kwrd">="*"</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">ColumnDefinition</span> <span class="attr">Width</span><span class="kwrd">="*"</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">Grid.ColumnDefinitions</span><span class="kwrd">&gt;</span>
    
    <span class="kwrd">&lt;</span><span class="html">Rectangle</span> <span class="attr">x:Name</span><span class="kwrd">="VideoVisualization"</span> 
               <span class="attr">Grid</span>.<span class="attr">Row</span><span class="kwrd">="0"</span> 
               <span class="attr">Grid</span>.<span class="attr">Column</span><span class="kwrd">="0"</span>
               <span class="attr">Grid</span>.<span class="attr">ColumnSpan</span><span class="kwrd">="2"</span>
               <span class="attr">Margin</span><span class="kwrd">="30"</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">Rectangle.Effect</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">DropShadowEffect</span> <span class="attr">BlurRadius</span><span class="kwrd">="15"</span>
                              <span class="attr">Color</span><span class="kwrd">="Black"</span>
                              <span class="attr">ShadowDepth</span><span class="kwrd">="4"</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">Rectangle.Effect</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">Rectangle</span><span class="kwrd">&gt;</span>

    <span class="kwrd">&lt;</span><span class="html">Button</span> <span class="attr">x:Name</span><span class="kwrd">="TurnOnButton"</span> 
            <span class="attr">Content</span><span class="kwrd">="Turn on Webcam"</span> 
            <span class="attr">Grid</span>.<span class="attr">Row</span><span class="kwrd">="1"</span>
            <span class="attr">Grid</span>.<span class="attr">Column</span><span class="kwrd">="0"</span>
            <span class="attr">Click</span><span class="kwrd">="TurnOnButton_Click"</span>
            <span class="attr">Margin</span><span class="kwrd">="5"</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">Button</span> <span class="attr">x:Name</span><span class="kwrd">="TurnOffButton"</span> 
            <span class="attr">Content</span><span class="kwrd">="Turn off Webcam"</span> 
            <span class="attr">Grid</span>.<span class="attr">Row</span><span class="kwrd">="1"</span>
            <span class="attr">Grid</span>.<span class="attr">Column</span><span class="kwrd">="1"</span>
            <span class="attr">Click</span><span class="kwrd">="TurnOffButton_Click"</span>
            <span class="attr">Margin</span><span class="kwrd">="5"</span><span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">Grid</span><span class="kwrd">&gt;</span></pre>
<br />Um nun auf die Webcam zuzugreifen werden einige Klassen benötigt:<br />
<ul>
<li><b>CaptureDeviceConfiguration</b> - Stellt den Zugriff auf das Standard-Video Capturing Device zur Verfügung, als auch den Zugriff auf die Audio-Funktionalität. Ebenfalls kann darüber der Zugriff auf die Komponente angefordert werden.</li>
<li><b>CaptureSource</b> - Klasse für das tatsächliche Capturing</li>
<li><b>VideoBrush</b> - Zeichnet den tatsächlichen Videobereich</li>
</ul>
<br />Mit diesen Informationen kann eine einfache Klasse zur Steuerung der Webcam entwickelt werden:<br />
<pre class="csharpcode">
<span class="kwrd">public</span> <span class="kwrd">class</span> WebcamHandler
{
    <span class="kwrd">private</span> VideoCaptureDevice videoDevice;
    <span class="kwrd">private</span> CaptureSource source;
    <span class="kwrd">private</span> Shape visualizationElement;

    <span class="kwrd">public</span> Shape VisualizationElement
    {
        get { <span class="kwrd">return</span> visualizationElement; }
        set { visualizationElement = <span class="kwrd">value</span>; }
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> Start()
    {
        videoDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();

        <span class="kwrd">if</span> (CaptureDeviceConfiguration.RequestDeviceAccess())
        {
            <span class="kwrd">if</span> (source != <span class="kwrd">null</span>)
            {
                source.Start();
                <span class="kwrd">return</span>;
            }

            source = <span class="kwrd">new</span> CaptureSource();
            source.VideoCaptureDevice = videoDevice;

            VideoBrush videoBrush = <span class="kwrd">new</span> VideoBrush();
            videoBrush.SetSource(source);
            videoBrush.Stretch = Stretch.UniformToFill;

            source.Start();

            VisualizationElement.Fill = videoBrush;
        }
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> Stop()
    {
        source.Stop();
    }
}</pre>
<br />Diese Klasse muss nun lediglich im Codebehind innerhalb der Button-Handler eingebunden werden:<br />
<pre class="csharpcode">
<span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> MainPage : UserControl
{
    WebcamHandler webcam = <span class="kwrd">new</span> WebcamHandler();

    <span class="kwrd">public</span> MainPage()
    {
        InitializeComponent();
    }

    <span class="kwrd">private</span> <span class="kwrd">void</span> TurnOnButton_Click(<span class="kwrd">object</span> sender, RoutedEventArgs e)
    {
        webcam.VisualizationElement = VideoVisualization;
        webcam.Start();
    }

    <span class="kwrd">private</span> <span class="kwrd">void</span> TurnOffButton_Click(<span class="kwrd">object</span> sender, RoutedEventArgs e)
    {
        webcam.Stop();
    }
}</pre>
<br />Und schon kann unsere Beispiel-Anwendung gestartet werden. Beim Aufruf von <i>CaptureDeviceConfiguration.RequestDeviceAccess()</i> erscheint ein Dialog, mit dem wir den Zugriff gewähren müssen:<br /><br /><a href="javascript:openpopup('http://blog.norberteder.com/images/SilverlightWebcamSample01.jpg',564,217,false);"><img src="http://blog.norberteder.com/images/SilverlightWebcamSample01.jpg" width=490 height=189 border=0 alt=''></a><br /><br />Wurde der Zugriff gewährt, startet das Capturing:<br /><br /><a href="javascript:openpopup('http://blog.norberteder.com/images/SilverlightWebcamSample02.jpg',475,472,false);"><img src="http://blog.norberteder.com/images/SilverlightWebcamSample02.jpg" width=475 height=472 border=0 alt=''></a><br /><br />Die Demoanwendung gibt es natürlich auch noch als Download.<br />
<iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-c8d8cb313db8e795.skydrive.live.com/embedicon.aspx/%c3%96ffentlich/Samples/SilverlightCameraDemo.zip"></iframe>
<br />]]></description>
			<category>.NET, WPF, Silverlight</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091220-132026</guid>
			<author>Norbert Eder</author>
			<pubDate>Sun, 20 Dec 2009 12:20:26 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091220-132026</comments>
		</item>
		<item>
			<title>SharePoint Error: Some or all identity references could not be translated</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091217-113036</link>
			<description><![CDATA[Wer VPCs mit WSS im Einsatz hat, diese dann auch kopiert und anschließend entsprechend konfiguriert, der kann mal eben schnell zu Meldung<br /><br /><b>Some or all identity references could not be translated</b><br /><br />in der Sharepoint Central Administration gelangen. Ist dem der Fall einfach den Command<br /><br />stsadm.exe -o updatefarmcredentials -userlogin -password<br /><br />ausführen, dann sollte alles wieder funktionieren.]]></description>
			<category>Entwicklung</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091217-113036</guid>
			<author>Norbert Eder</author>
			<pubDate>Thu, 17 Dec 2009 10:30:36 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091217-113036</comments>
		</item>
		<item>
			<title>WPF/Silverlight Community Day</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091203-165645</link>
			<description><![CDATA[<img src="http://blog.norberteder.com/images/comm_day2_120x240.png" width=120 height=240 border=0 alt='' id="img_float_left"> Am <b>29. Jänner 2010</b> findet in <b>Graz</b> zum ersten Mal der <a href="http://communityday.wpf-blogger.com" target="_blank" >WPF/Silverlight Community Day</a> statt, welcher von <a href="http://communityday.wpf-blogger.com/MarioMeirHuber.ashx" target="_blank" >Mario Meir-Huber</a> und mir veranstaltet wird. Einen ganzen Tag lang dreht sich alles um besagte Technologien.<br /><br />Im Rahmen von Vorträgen wird nicht nur Wissen transferiert, es bleibt zusätzlich genügend Raum für spannende Diskussionen und Socializing. Abgeschlossen wird der Tag durch eine Abendveranstaltung, an der jeder herzlich zur Teilnahme eingeladen ist.<br /><br />Für diese Veranstaltung stehen insgesamt <b>40 Plätze</b> zur Verfügung und ist grundsätzlich <b>kostenlos</b>. Da wir neben der Raummiete auch für ein Catering sorgen möchten, bitten wir um eine kleine Spende.<br /><br />Nachfolgend finden sich Links zu weiterführenden Informationen:<br /><a href="http://communityday.wpf-blogger.com/2010Graz.MainPage.ashx" target="_blank" >WPF/Silverlight Community Day</a><br /><a href="http://communityday.wpf-blogger.com/2010Graz.Veranstaltungsort.ashx" target="_blank" >Veranstaltungsort</a><br /><a href="http://communityday.wpf-blogger.com/2010Graz.Sessions.ashx" target="_blank" >Sessions</a><br /><br />Auf den Seiten der Veranstaltung finden sich zusätzlich Informationen zu den Themen Unterkunft, Anreise, Parken und der Abendveranstaltung. Diese werden natürlich laufend erweitert und aktualisiert.<br /><br />Alle Neuigkeiten, Änderungen und Informationen können auch via Twitter bezogen werden: <a href="http://twitter.com/communityday" target="_blank" >twitter.com/communityday</a>.<br />]]></description>
			<category>.NET, WPF, Silverlight</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091203-165645</guid>
			<author>Norbert Eder</author>
			<pubDate>Thu, 03 Dec 2009 15:56:45 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=12&amp;entry=entry091203-165645</comments>
		</item>
		<item>
			<title>Was ist neu in Silverlight 4?</title>
			<link>http://blog.norberteder.com/index.php?entry=entry091119-083509</link>
			<description><![CDATA[Die PDC bringt immer Neues. Diesmal wurde unter anderem Silverlight 4 Beta vorgestellt. In die neue Version fanden wieder zahlreiche Features ihr neues Zuhause.<br />
<ul>
<li>Druckunterstützung</li>
<li>Webcam-Support.</li>
<li>Multi-touch-Support für Gesten etc.</li>
<li>Kontextmenüs</li>
<li>Zugriff auf das Clipboard</li>
<li>Drag & Drop</li>
<li>Mouse Wheel Unterstützung</li>
</ul>
<br />Eine vollständige Liste aller neuen Features und Erweiterungen sind auf der <a href="http://www.silverlight.net/getstarted/silverlight-4-beta/" target="_blank" >Silverlight 4 Beta</a>-Seite zu finden.<br /><br />Zusätzlich gibt es in Visual Studio 2010 einen neuen Editor für Silverlight, der nicht nur zuverlässiger ist, sondern auch neue Funktionen mitbringt (Setzen von Data-Binding etc. in den Eigenschaften).<br /><br />Zu guter Letzt gibt es auch noch neue Funktionen für den Out-Of-Browser Mode. So kann nun die Fenstergröße gesetzt werden, Benachrichtigungs-Fenster sind möglich usw.<br /><br />Downloads und weitere Infos finden sich auf <a href="http://www.silverlight.net" target="_blank" >http://www.silverlight.net</a>.<br /><br />Mit der finalen Version darf im ersten Halbjahr 2010 gerechnet werden.<br /><br /><h2>Hilfreiche Links</h2><br /><a href="http://go.microsoft.com/fwlink/?LinkID=177508" target="_blank" >Silverlight 4 Beta Tools für Visual Studio 2010</a><br /><a href="http://go.microsoft.com/fwlink/?LinkId=169446" target="_blank" >Microsoft Expression Blend für .NET 4 Preview</a><br /><a href="http://go.microsoft.com/fwlink/?LinkID=111305" target="_blank" >Online Silverlight 4 Beta Dokumentation</a><br /><a href="http://go.microsoft.com/fwlink/?LinkID=167824" target="_blank" >Offline CHM Silverlight 4 Beta Dokumentation</a><br />]]></description>
			<category>.NET, Silverlight</category>
			<guid isPermaLink="true">http://blog.norberteder.com/?entry=entry091119-083509</guid>
			<author>Norbert Eder</author>
			<pubDate>Thu, 19 Nov 2009 07:35:09 GMT</pubDate>
			<comments>http://blog.norberteder.com/comments.php?y=09&amp;m=11&amp;entry=entry091119-083509</comments>
		</item>
	</channel>
</rss>
