.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • ACHTUNG - NEUES BLOG

    Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
Download .NET Essentials Installer
Trickkiste

Entwickler sind nicht gleich Entwickler

18.03.09 - Entwicklung, Diskussionen, Qualitätsmgmt.
Beitrag von Norbert Eder
 Jeder sucht sie. Die Entwickler im Alter von 25 mit 15 Jahren Berufserfahrung und einem abgeschlossenen Studium. Auch in vielleicht nicht allzu rosigen Zeiten. Die Anforderungen der Firmen sind mehr oder weniger hoch. Je nach Bedarf ergeben sich jedoch gut dotierte Stellen. Doch können auch alle Bewerber die gewünschten Anforderungen erfüllen?

Bis dato hatte ich immer wieder gewettert, dass die Anforderungen an einen potentiellen Mitarbeiter recht hoch sind, während die gebotenen Leistungen oft zu wünschen über lassen, oder gar keine Erwähnung finden. Mittlerweile sehe ich dies gar nicht mehr als die tatsächliche Hürde, da die Leistungen reine Verhandlungssache sind und Unternehmen durchaus bereit sind, gute Leistungen entsprechend zu honorieren.

Vielmehr möchte ich dieses Mal in eine andere Kerbe schlagen: Bekommt das Unternehmen das, was der Bewerber versprochen hat? Lebensläufe sind ja ganz nett um den Werdegang eines potentiellen Mitarbeiters zu begutachten. Darauf lässt sich nur leider - in vielen Fällen - kaum etwas über die Person selbst ableiten. Leistungen an teilgenommenen Projekten werden in die höchsten Sphären gelobt, es wird erzählt, was denn nicht alles gemacht wurde und wofür man sich denn nicht alles interessiert.

Die Wirklichkeit sieht jedoch oft anders aus. Damit möchte ich keinem Entwickler etwas unterstellen. Im Gegenteil - schließlich bin ich doch selbst einer und würde mir dadurch nur ins eigene Fleisch schneiden. Tatsache ist jedoch, dass nicht jeder Entwickler mit jahrerlanger Erfahrung auch wirklich das Geld wert ist, das er für seine Leistungen erhält. Auf Basis der jahrelangen Erfahrung (wie immer diese auch aussieht) tritt oft ein Schlendrian ein, der vor persönlicher Weiterentwicklung schützt. Konzepte, die eigentlich klar sein sollten, sind es nicht. Selbstschützende Maßnahmen (Testing) werden nicht durchgeführt, da sich dieses Bewusstsein trotz jahrelanger Entwicklung (und Erfahrung) nicht gefestigt oder gar gebildet hat.

Toll finde ich Initiativen, welche den Entwickler unterstützen, seine tägliche Arbeit zu verbessern, das Bewusstsein für qualitativ hochwertige Software zu schärfen. Im Endeffekt liegt es am Entwickler selbst - und seinen Kenntnissen. Die besten bewusstseinsbildenden Maßnahmen greifen nicht, wenn er selbst nicht bereit ist, an seinen eigenen Prozessen zu arbeiten. Motivation, Eigeninitiative, Wissbegiehrigkeit und Genauigkeit sind gefragt. Das sind die Basis-Skills, die jeder Softwareentwickler mit sich bringen sollte.

Sehr viele Entwickler leben jedoch in den Tag hinein, erledigen ihre Aufgaben und lassen alles andere bei Seite. Ein denkbar schlechter Weg, qualitativ hochwertige Software zu produzieren. Dabei ist das Wissenslevel nicht entscheidend. Jeder, wirklich jeder kann gute Software schreiben. Vielleicht unterscheidet sich die Software im gewählten Design, vielleicht finden sich wenige oder unbewusst genutzte Patterns darin. Aber das Produkt ist robust und erfüllt die Anforderungen. Softwareentwickler, die nur ihren Task berücksichtigen, nicht rechts und nicht links blicken, sind out.

Auch wenn es hart klingt: Unternehmen müssen darauf reagieren. Nicht jeder ist ein Technologiefreak oder gar ein Multiplikator, es darf jedoch damit gerechnet werden, dass sich jeder Entwickler mit seinem Werkzeug vertraut macht und versucht, seine Leistung zu optimieren. Jeder Entwickler, der nicht mindestens das versucht, hat sich - meiner bescheidenen Meinung nach - in seiner Berufswahl vertan.


  7 Kommentare - 1976 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


VSTO-Taskforce: Eine Anlaufstelle für VSTO-Entwickler

04.03.09 - Microsoft Office, Internet, Community
Beitrag von Norbert Eder
 Lars Keller und Mario Meir-Huber haben einem neuen Projekt Leben eingehaucht, der VSTO Taskforce. Hierbei handelt es sich um eine Anlaufstelle für alle VSTO-Entwickler, als auch für Interessierte.

In der ersten Phase werden Informationen als Blog-Aggregation zur Verfügung gestellt. Eine Erweiterung des Angebotes ist angedacht.

Link: http://www.vsto-taskforce.de

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Student BigDays 2009 – Packen wir’s an!

02.03.09 - .NET, Grundlagen, WPF, ASP.NET, Silverlight, Visual Studio, Internet, Community
Beitrag von Norbert Eder
 Student BigDays ist eine Roadshow an Österreichs Universitäten, wo Informationen und Know How über aktuelle Microsoft-Themen vermittelt werden. Das Ziel ist, Informationen außerhalb des Studiums zu vermitteln, also Dinge die nicht im aktuellen Lehrplan stehen.

An folgenden Fachhochschulen und Universitäten werden die Student BigDays 2009 Halt machen:
  • FH Salzburg
  • Universität Salzburg
  • FH Joanneum
  • Universität Innsbruck
  • FH Hagenberg
  • Johannes Kepler Universität Linz
  • Universität Salzburg

Die Teilnahme ist für alle Studenten kostenlos.

Weitere Informationen zu den Sessions, den Speakern etc. sind unter http://www.studentbigdays.at zu finden.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Visual Studio Team System Information Days

16.02.09 - .NET, Visual Studio, Internet, Community
Beitrag von Norbert Eder
 


Auch dieses Jahr haben Interessierte wieder die Möglichkeit, sich bei der regelmäßig stattfindenden Workshop-Reihe "Visual Studio Team System Information Days" Einblick in die unterschiedlichen Rollen eines Entwicklungsprozesses und deren koordinierte Zusammenarbeit zu verschaffen.

Als ganzheitliches Toolset "aus eigener Hand" unterstützt Visual Studio Team System den gesamten Prozess des Application Lifecycle Management (ALM) von Anforderungsmanagement über Design, Entwicklung und Test bis hin zum Betrieb der Software.

Noch bis Ende Juni 2009 werden die kostenpflichtigen ganztägigen Workshops in verschiedenen deutschen Städten (in den Niederlassungen der Microsoft Deutschland GmbH) durchgeführt. Sie richten sich in erster Linie an Leiter der Anwendungsentwicklung, Projektleiter, Senior Developer sowie technische Entscheider aus Unternehmen mit Entwicklungsteams.

Für Community-Mitglieder entfällt die Teilnahmegebühr von 49,- EUR. Wie erfahrt Ihr auf der Veranstaltungswebseite: http://go.microsoft.com/?linkid=9649598

  3 Kommentare - 981 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Innovation Award 2009 - Microsoft Österreich

12.02.09 - Entwicklung, .NET, Internet, Community
Beitrag von Norbert Eder
 Microsoft Österreich veranstaltet 2009 erstmals den Innovation Award. Am insgesamt mit 14.000 € dotierten Innovation Award kann jeder seiner innovativen Idee, basierend auf Microsoft Technologien, zum Durchbruch verhelfen.

Am Innovation Award teilnehmen kann praktisch jeder – Microsoft Partner und Kunden aus allen Branchen, Teilnehmer am BizSpark Programm und Imagine Cup, Studenten sowie Mitglieder von Forschungsinstituten, Universitäten und Fachhochschulen.

Bis zum 3. April 2009 können Sie Ihr Projekt online einreichen. Nach Ende der Einreichfrist wird bis 10. April 2009 eine Shortlist von 10 Einreichungen erstellt. Die 5 Finalisten beim Innovation Award 2009 werden bis 15. April 2009 bekanntgegeben – sind Sie nominiert, haben Sie Gelegenheit, Ihre Idee beim Entrepreneurship-Forum am Innovation Day am 7. Mai 2009 im Microsoft Innovation Center persönlich zu präsentieren.

Weitere Informationen sind unter http://www.innovationaward.at zu finden.
  1 Kommentar - 1044 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Clean Code Developer - Gedanken zum Online-Meeting

10.02.09 - Entwicklung, Diskussionen, Patterns, Software Testing, Qualitätsmgmt.
Beitrag von Norbert Eder
 Gestern hatte es das 3. Online Meeting von ALT.NET DE zum Thema Clean Code Developer (CCD) gegeben. Mit dabei war jede Menge Prominenz der deutschsprachigen .NET Community.

Ich möchte an dieser Stelle jetzt nicht das Thema Clean Code Developer (= die Initiative) breittreten - da kann sich jeder auf oben verlinkter Site informieren. Vielmehr möchte ich auf einen gestrigen Aspekt eingehen, dem ich nicht so wirklich zustimmen möchte und den ich gerne diskutieren würde.

Grundsätzlich, damit ich nicht falsch verstanden werde: Ich finde diese Initiative sehr gut, sie erhält meine vollste Unterstützung und auch ich versuche tagtäglich, mich und meinen Output zu verbessern.

Einer der Punkte, der gestern aufkam, betraf die Verteilung der Prinzipien, Paradigmen und Werte. Hier kam mehrfach zur Sprache, dass denn die Hersteller von Entwicklungstools, als auch die Lehre (konkret wurden Fachhochschulen angesprochen) hauptsächlich zur Verbreitung dieser Bewegung beitragen sollten, dies aber lange Zeit vernachlässigt wurde bzw. immer noch wird. Durch das Eine oder Andere Zitat eines FH-Professors sollte dies weiter unterstrichen werden.

Da ich selbst an einer Fachhochschule unterrichte und daher die "andere Seite" auch ganz gut kenne, möchte ich dazu meine Gedanken einbringen (dies gilt auch für Trainingscenter etc.):

Ich kann nicht beurteilen, wie Fachhochschulen in Deutschland aufgestellt sind. Ich kenne einige in Österreich und weiß daher, dass an zahlreichen Fachhochschulen wichtige Prinzipien zur Erhöhung der Software-Qualität gelehrt werden. Woraus besteht dies in vielen Fällen?
  • Vermittlung des notwendigen Stoffes
  • Hervorhebung der sich daraus ergebenden Vorteile
  • Laufende Verwendung, sofern möglich
  • Bei Bedarf Diskussion und Gegenüberstellung

Dies bedeutet: Die Lehre vermittelt das notwendige Wissen (Qualitätssicherungsmaßnahmen, Code Metriken, Code Coverage, Versionierung, Test, etc.). Auf dieser Basis werden die Vorteile klar hervorgehoben und versucht, diese in sämtlichen Projekten einzusetzen (Teile werden zwingend vorgegeben).

Was aber jetzt nicht durch die Lehre passieren kann (konträr zu einigen gestrigen Meinungen) ist, dass dieses Muster in jeden hinein geprügelt werden kann. So funktioniert es nicht. Der angehende Entwickler (egal ob durch eine Ausbildung, ein Training, FH, Uni, etc.) muss von sich aus die Vorteile aufnehmen und sich selbst dahin bringen, diese laufend einzusetzen. Der Vortragende kann den Grundstock legen. Genauso wie es der Hersteller von Entwicklungswerkzeugen kann. Aber weder der Vortragende, noch der Hersteller können den Entwickler zwingen.

Aus dieser Sichtweise heraus ist es ebenfalls unwesentlich, ob diverse Praktiken vom Vorgesetzten unterstützt werden oder nicht. Wer um Qualität bemüht ist, wird dies umsetzen. So oder so. Wer um Qualität bemüht ist, wird sich fortbilden bzw. nach entsprechenden Möglichkeiten suchen. Wer gezwungen wird, der lehnt sich dagegen auf. Das ist der natürliche Lauf der Dinge.

Fazit: Es braucht Multiplikatoren (Hersteller, Vortragende, aber VOR ALLEM Entwickler), welche die Vorteile aufzeigen, die unterstützend tätig sind, damit möglichst viele auf diesen Zug aufspringen. Aber niemand kann von einem Absolventen erwarten, dass er es genau so macht und dann der Ausbildungsstätte die Schuld zuweisen, es würde nicht gelehrt werden. Daher mache ich den Softwareentwickler (fast) alleine für (fehlende) Qualität verantwortlich. Schließlich heißt es ja auch Clean Code Developer.

  2 Kommentare - 6682 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Artikel: WPF Erneuert

04.02.09 - .NET, WPF
Beitrag von Norbert Eder
 In der aktuellen Ausgabe 02/09 des Magazins Visual Studio One befindet sich wieder ein Artikel von mir.

WPF erneuert

Das Service Pack 1 zum .NET Framework 3.5 wurde vor kurzem veröffentlicht, und damit kam eine ganze Reihe an Veränderungen auf den .NET-Entwickler zu. Auch die Windows Presentation Foundation (WPF) ist von Änderungen betroffen. Wir werfen für Sie einen Blick auf die wichtigsten dieser Änderungen.

Homepage: http://www.visualstudio1.de/
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF Blogger auch in Spanisch

31.01.09 - .NET, WPF, ASP.NET, Silverlight, Internet, Community
Beitrag von Norbert Eder
  Bisher wurden auf WPF-Blogger.com drei Sprachen angeboten. Verfügbare waren bis jetzt deutsch, englisch und französisch. Heute kam eine neue Sprache hinzu. Ab sofort werden auch spanisch-sprachige Blogs aggregiert. Dies passierte auf vielfachen Wunsch, eingebracht über mein englischsprachiges Blog.

Wer übrigens empfehlenswerte Blogs zum Thema WPF und Silverlight kennt (egal welcher Sprache), der kann sich gerne mit mir in Verbindung setzen, oder den Vorschlag hier eintragen.


  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Styling und Animation einer WPF ListBox

30.01.09 - .NET, WPF
Beitrag von Norbert Eder
 Eine sehr häufig gestellte Frage ist die, wie eine WPF ListBox gestyled und animiert wird. Anhand des nachfolgenden Beispiels wird gezeigt, in welchen Templates was gemacht werden kann und welche Auswirkungen dies hat. Was kann aus diesem Artikel gelernt werden?
  • Animieren von Listbox-Einträgen
  • Überschreiben des Fokuses
  • Styling eines ausgewählten Eintrags

Bevor es ans Eingemachte geht, sehen wir uns das Eregebnis an:



Um die Daten anzuzeigen, werden Objekte vom Typ Person verwendet. Dabei handelt es sich um Datenobjekte, welche sehr einfach aufgebaut sind:
public class Person
{
    public String FirstName { get; set; }
    public String LastName { get; set; }

    public override string ToString()
    {
        return String.Format("{0}, {1}", LastName, FirstName);
    }
}

Um Testdaten zu beziehen wird ein Mock-Objekt verwendet:
public static class PersonMock
{
    private static PersonCollection people =
        new PersonCollection();

    public static PersonCollection GetPeople()
    {
        if (people.Count > 0)
            return people;

        for (int i = 0; i < 10; i++)
            people.Add
                (
                    new Person
                    {
                        FirstName = "FirstName" + i.ToString(),
                        LastName = "LastName" + i.ToString()
                    }
                );

        return people;
    }
}

Nun können wir daran gehen, die ListBox zu stylen:

Dafür ist ein DataTemplate zu erstellen. Dieses wird als ItemTemplate verwendet und beschreibt somit die Darstellung jedes einzelnen Eintrages der ListBox:
<DataTemplate DataType="Person">
    <Border
        Cursor="Hand"
        Name="BorderControl"
        Background="WhiteSmoke"
        BorderThickness="0"
        CornerRadius="5"
        Padding="5">
        <TextBlock
            Name="TextControl"
            Grid.Column="0"
            Text="{Binding}"
            Background="Transparent"
            Padding="4">
            <TextBlock.Style>
                <Style TargetType="TextBlock">
                    <Style.Triggers>
                        <DataTrigger
                            Binding="{Binding ElementName=BorderControl,
                                      Path=IsMouseOver}"
                            Value="True">
                            <Setter Property="Foreground" Value="White"/>
                            <Setter Property="FontWeight" Value="Bold"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Border>
    <DataTemplate.Triggers>
        <EventTrigger
            SourceName="BorderControl"
            RoutedEvent="TextBlock.MouseEnter">
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Storyboard.TargetName="BorderControl"
                        Storyboard.TargetProperty="Background.Color"
                        To="DarkRed" Duration="00:00:00.2" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
        <EventTrigger
            SourceName="BorderControl"
            RoutedEvent="TextBlock.MouseLeave">
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Storyboard.TargetName="BorderControl"
                        Storyboard.TargetProperty="Background.Color"
                        To="WhiteSmoke" Duration="00:00:00.2" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

Das DataTemplate selbst ist sehr einfach gestrickt. Es definiert einen Border, der um ein TextBlock-Element gelegt wird.

Der wesentlich interessantere Part liegt bei den verwenderten Triggern. Es gibt einen DataTrigger für das TextBlock-Element und einige EventTrigger. Worin liegt der genaue Unterschied?

Ein DataTrigger wird an eine Eigenschaft gebunden und überwacht deren Änderungen. Ist der definierte Wert gesetzt, werden die im Trigger definierten Setter ausgeführt. Ändert sich der Wert nochmals, wird der ursprüngliche Zustand hergestellt.

Ein EventTrigger fungiert wie ein Eventhandler für Ereignisse. Das Ereignis wird abonniert und tritt dieses auf, wird die definierte Aktion ausgeführt. In diesem Beispiel wird eine Animation für den Eintrag ausgeführt, der aktuell unterhalb der Maus liegt. Dies wird über die Events MouseEnter und MouseLeave festgestellt. Das erste Ereignis wird geworfen, sobald die Maus in den sichtbaren Bereich eines Elementes gelangt. In diesem Fall wird mit Hilfe einer Animation das Aussehen verändert. Das MouseLeave-Ereignis wird ausgelöst, wenn die Maus den Bereich des Elementes wieder verläßt. In diesem Fall wird durch eine Animation das ursprüngliche Aussehen wieder hergestellt.

Für eine ListBox reicht das aktuell definierte Styling noch nicht. Es fehlen noch zwei Dinge: Erstens erscheint bei einem Klick auf ein Element ein Fokusrand, der beseitigt werden soll. Dies führt und schlussendlich dazu, dass ein ausgewähltes Item noch nicht gestyled wurde. Sehen wir uns hierzu den entsprechenden Style an:
<Style x:Key="GlowContainer" TargetType="{x:Type ListBoxItem}">
    <Setter Property="FocusVisualStyle">
        <Setter.Value>
            <Style>
                <Setter Property="Control.Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Border
                                Background="Transparent"
                                Opacity="0"
                                CornerRadius="0">
                                <Rectangle
                                    Margin="0"
                                    StrokeThickness="0"
                                    Stroke="Transparent"
                                    StrokeDashArray="1 2"/>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border Background="WhiteSmoke"
                            CornerRadius="5"
                            BorderThickness="2"
                            x:Name="ItemBorder"
                            Margin="6,3,6,3" >
                    <ContentPresenter />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsSelected" Value="true">
                        <Setter
                            TargetName="ItemBorder"
                            Property="BitmapEffect">
                            <Setter.Value>
                                <OuterGlowBitmapEffect
                                    GlowColor="DarkRed"
                                    GlowSize="5" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Der definierte Style enthält zwei Setter. Im ersten wird der ItemContainerStyle definiert. Der Item-Container einer ListBox wird durch ein ListBoxItem dargestellt. Erhält dieses den Fokus, wird dieser dargestellt. In unserem Style definieren wir nun einen Border, der transparent dargestellt wird. Dadurch ist der Fokus nicht mehr zu sehen.

Damit das ausgewählte Element entsprechend dargestellt wird, werden im zweiten Setter die notwendigen Vorkehrungen getroffen. So wird ein ControlTemplate definiert. Dieses besteht aus einem Border und einem ContentPresenter. Den Border werden wir nutzen, um einen Glow-Effekt darzustellen. Der ContentPresenter stellt den Platzhalter für den anzuzeigenden Inhalt dar.
Zusätzlich enthält das ControlTemplate einen Trigger. Dieser hängt sich an die Eigenschaft IsSelected und schlägt an, sobald der Wert auf true gestellt wird, also das Element ausgewählt wurde. In diesem Fall wird ein Outer Glow definiert und die Eigenschaft BitmapEffect gesetzt. Damit wäre das ausgewählte Element auch gestyled.

Wer an diesem Beispiel testen möchte, kann dieses unterhalb herunter laden. Ich empfehle jedoch einen genaueren Blick auf Control Templates, Data Templates, Triggers, Effekte und Animationen, um eine tieferes Verständnis zu erhalten.



  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF PropertyGrid in neuer Version verfügbar

29.01.09 - .NET, WPF, Internet, Community, Tools, 3rd Party Tools
Beitrag von Norbert Eder
  Das zu 100% in WPF entwickelte WPF PropertyGrid Control wurde in einer neuen Version zur Verfügung gestellt. Es bietet reichhaltige Funktionen und ist zudem auch noch hübsch anzusehen. Nachfolgend ein Ausschnitt der langen Funktionsliste:
  • 100% WPF Component (no Windows Forms interop, no native code calls, etc.)
  • Same property editing approach introduced by Visual Studio 2008 WPF Designer ("Cider") and Expression Blend, same steps for creating inline and dialog based editors
  • Built-in property editors and support for editors customization, injection
  • Property grouping, sorting and filtering, property display schemas based on multiple rule sets
  • Several display modes for properties (Native CLR properties, Dependency properties, All properties)
  • Optional display of Attached or Read-only properties
  • Category initial mode configuration (expanded or collapsed by default)
  • Property metadata (DisplayNameAttribute, CategoryAttribute, DescriptionAttribute, etc) and ICustomTypeDescriptor support
  • All property metadata is accessible from custom editors, MetadataStore support
  • Property "Search Box" with live view updates, possibility to hide/show search box
  • Basic support for Windows Forms interopability, display of non-dependency objects, integration into Windows Forms application)

Weitere Informationen, Screenshots, Tutorials etc. finden sich auf der Projektseite: http://www.codeplex.com/wpfpropertygrid


  1 Kommentar - 1368 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter