.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

.NET Blog - Refresh

10.06.08 - Blog-Intern
Beitrag von Norbert Eder
 Mit zunehmender Zahl an Artikeln und Besuchern, musste die Online-Präsenz http://www.dotnet-blog.com (englischsprachig) nun endlich ein Update erfahren:

Neues Layout



Zusätzlich wurden auch die Kategorien angepasst. D.h. es wurde nicht nur die Anzahl verringert, sondern auch die Aussagekraft erhöht.

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


WPF Anwendungen um Add-Ins erweitern

09.06.08 - .NET, WPF
Beitrag von Norbert Eder
 Wer seine WPF Anwendungen um Add-Ins erweitern möchte, der wird sich vielleicht das eine oder andere Szenario überlegen. Die Windows Presentation Foundation steht aber auch hier hilfreich zur Seite. Unter nachfolgendem Link sind zahlreiche Artikel und Beispiele zu finden, die helfen, diese Anforderung entsprechend umzusetzen.

Windows Presentation Foundation Add-Ins Overview

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


In eigener Sache: Diagramm-Tool mit EPS-Export gesucht

09.06.08 - Blog-Intern
Beitrag von Norbert Eder
 Nach langer Suche und keinem zufriedenstellenden Ergebnis wende ich mich hiermit an meine Leser. Möglicherweise hat jemand einen Tipp für mich.

Gesucht: Ein Werkzeug um Fluss-Diagramme etc. zu erstellen, welche als EPS exportiert werden können.

Anforderungen:
  • Diagramme sollten durchaus nett anzusehen sein. D.h. 80er Jahre Stil ist nicht unbedingt gefragt
  • Preise á la Adobe-Produkte möchte ich definitiv nicht ausgeben, ich bin aber bereit den einen oder anderen Euro auszugeben
  • Sollte unter Vista lauffähig sein

Für sachdienliche Hinweise wäre ich sehr dankbar. Bitte jedoch nur Hinweise auf Anwendungen, die getestet wurden.

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


Artikel: Flexibel und einfach wie HTML

08.06.08 - Blog-Intern
Beitrag von Norbert Eder
  In der Ausgabe 03/08 der Visual Studio One findet sich ein Artikel zum Thema WPF, geschrieben von meiner Wenigkeit:

Nicht nur für Softwareentwickler gibt es (zu Recht) Styleguides. Auch für Windows-Anwendungen stehen von Microsoft offizielle Richtlinien zur Verfügung. So war es schon für Windows XP, und so ist es auch für Windows Vista. In diesem Artikel erfahren Sie mehr über den Windows Vista Styleguide und erhalten Anregungen und Hinweise dazu, wie Sie Ihre WPF-Anwendungen daran ausrichten können.

Weitere Informationen auf der Homepage der Visual Studio One.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF und MVC

08.06.08 - Entwicklung, Diskussionen, Patterns, .NET, WPF
Beitrag von Norbert Eder
 Anwendungen sollten nicht nur schön anzusehen sein, sondern auch das robust und korrekt tun, wofür sie geschaffen wurden. Damit dem so ist, muss sich der Entwickler/Architekt natürlich zu Beginn eines Projektes so einige Gedanken machen. Denn nur durch ein gutes Grundgerüst werden Anforderungen á la Erweiterbarkeit, Testbarkeit, einfache Wartung usw. auch erfüllt.

Das Model View Controller Pattern ist da so ein Ansatz. Mittlerweile Jahrzehnte am Buckel hatte sich dieses Pattern immer wieder bewährt (in seiner ursprünglichen Form oder in einer abgewandelten).

Wie nun die Windows Presentation Foundation mit dem Model View Controller Pattern zusammen arbeitet, zeigt der Artikel MVC Pattern mit WPF verwenden, welchen ich gestern auf .NET GUI veröffentlicht habe.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF, Layouts und verschwundene Scrollleiste

05.06.08 - .NET, WPF
Beitrag von Norbert Eder
 

Das Problem


Ich habe auf meinem Fenster einige Elemente angeordnet. Darunter auch eine ListView. Diese hatte anfangs eine Scrollleiste, aber jetzt ist diese verschwunden? Warum?

Die Lösung


Diese und ähnliche Fragen werden sehr häufig gestellt. In den meisten Fällen liegt es daran, dass die verwendeten Layout-Elemente nicht gut genug bekannt sind und daher ein Fehlverhalten interpretiert wird, wo eigentlich gar keines ist.

Ein sehr verdächtiges Element ist in diesem Zuge das StackPanel. Es verändert seine Größe abhängig der eingebetteten Elemente.

Hier ein kleiner Beispielfall um dies näher zu beschreiben: Wir gehen davon aus, dass es ein StackPanel gibt. Dieses hat als Kindelement eine ListView. Letztere ist an eine Liste gebunden, welche einige hundert Elemente besitzt. Wird nun die Liste gebunden, vergrößert sich die ListView mit jedem Element das hinzugefügt wird. Bei einigen hundert Elementen kann man davon ausgehen, dass nicht mehr alle am Bildschirm angezeigt werden können und deswegen eine Scrollbar durchaus sehr sinnvoll wäre. Tatsächlich ist es nun so, dass sich das Elternelement, also das StackPanel, an die Größe der ListView anpasst und es somit gar nie notwendig wird, die Scrollbar anzuzeigen.
<DockPanel x:Name="ParentDock" Margin="8" 
           LastChildFill="True">
    <StackPanel DockPanel.Dock="Top">
        <Button Content="Click me first"/>
        <Button Content="Do not click me"/>
        <ListView x:Name="DemoBox">
            <ListView.View>
                <GridView>
                    <GridViewColumn/>
                    <GridViewColumn/>
                    <GridViewColumn/>
                </GridView>
            </ListView.View>
        </ListView>
    </StackPanel>
</DockPanel>

In diesem Beispiel ist das StackPanel zwar in ein DockPanel eingebettet, verändert aber dennoch seine Größe, da der Inhalt wesentlich größer ist. So sieht es aus:



In diesem Fall muss auch gar nicht viel verändert werden. Damit die ListView zu ihrer Scrollbar kommt, ist diese lediglich aus dem StackPanel heraus zu nehmen:
<DockPanel x:Name="ParentDock" Margin="8" 
           LastChildFill="True">
    <StackPanel DockPanel.Dock="Top">
        <Button Content="Click me first"/>
        <Button Content="Do not click me"/>
    </StackPanel>
    <ListView x:Name="DemoBox">
        <ListView.View>
            <GridView>
                <GridViewColumn/>
                <GridViewColumn/>
                <GridViewColumn/>
            </GridView>
        </ListView.View>
    </ListView>
</DockPanel>

Damit ist nun das DockPanel für die ListView zuständig und beschränkt deren Größe. Dadurch wird die Scrollbar sichtbar. So sieht’s aus:



Fazit


Durch dieses Problem muss sich jeder durchkämpfen, der mit WPF beginnt. Die Verhaltensweisen sind unterschiedlich zu Windows Forms, in einigen Fällen ähnlich zu ASP.NET. Wichtig ist, sich mit den jeweiligen Layout-Elementen zu beschäftigen und zu lernen, wie sie mit Inhalten umgehen. Mit ein wenig Spielerei sollten dann zukünftig derartige Probleme vermieden werden können. Es warten ohnehin genug andere …

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


Kleine Anwendungen und das richtige Datenbank-System

02.06.08 - .NET, Datenverwaltung, SQL Server
Beitrag von Norbert Eder
 Auch kleine Anwendungen müssen in vielen Fällen Daten halten und diese auch wieder bereit stellen. Nun stellen sich oft die Frage, welches Datenbank-System denn eigentlich das richtige sei.

Ich selbst bin ja ein Freund von XML, aber eben nicht immer, wenn es darum geht, Daten zu speichern. Vor allem dann nicht, wenn die Datenstrukturen komplexer werden (das muss nicht unbedingt mit einer hohen Anzahl an Daten einher gehen). D.h. für wenige und einfache Daten kann ruhig eine XML-Datei verwendet werden.

Wird es komplexer, greifen immer noch viele zu Access. Hier bin ich eher dagegen. Es ist zwar ein nettes Tool, wenn mal eben schnell im Sekretariat eine kleine Adressverwaltung (eventuell Outlook übersehen?) erstellt werden muss, oder eine andere kleine Anwendung. Für das Speichern von Daten aus einer Anwendung heraus würde ich es nicht wirklich empfehlen, da es dann doch vorkommen kann, dass man eben mal schnell die Reparatur-Funktion anwerfen muss (das muss auch nicht immer funktionieren). Zudem ist es mir ein wenig zu behäbig. Hier bieten sich meiner Meinung nach zwei Möglichkeiten an (wenn man sich auf die Microsoft-Welt beschränkt):
  1. SQL Server Express Edition
  2. SQL Server Compact Edition

Ein SQL Server Express Edition muss am System installiert werden und fungiert als echter Datenbank-Server. Ideal dann, wenn eine Multi-User-Anwendung entwickelt wird, die dennoch ein geringes Datenaufkommen bereitet (wenn auch die Express Edition äußerst performant ist).

Spricht die Anwendung einen kleineren Userkreis an, also überhaupt nur einen einzigen Benutzer, dann wäre der SQL Server Compact Edition definitiv eine Möglichkeit. Klein, handlich und lediglich eine Referenz auf eine Assembly, als auch nur eine Datendatei. Zugriff erfolgt über einen eigenen Provider, SQL natürlich inklusive. Eine wirkliche Alternative, keine notwendige Installation und noch dazu recht speedy.

Wer mit der SQL Server Compact Edition noch nichts gemacht hat, sie aber in einem Projekt einsetzen möchte, der sei auf die folgenden beiden Links verwiesen, welche mit Erklärungen und Sourcecode für C# und VB.NET aufzeigen, wie diese Edition verwendet wird:

Getting Started with SQL Server Compact Edition
SQL Server Compact Edition with C# and VB.NET

  4 Kommentare - 809 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


WPF: Data Template zur Laufzeit ändern

29.05.08 - .NET, WPF
Beitrag von Norbert Eder
 Wer WPF-Anwendungen entwickelt, kommt sehr schnell zur Problematik, dass dich Data Templates zur Laufzeit ändern sollen. Dies kann passieren, da bei einem MouseOver zusätzliche Informationen angezeigt werden sollen, oder es soll auf eine andere Aktion eine Reaktion gezeigt werden. Die Realisierung ist recht einfach, aber häufig gefragt.

Nehmen wir also ein kleines Beispiel. Gegeben sei ein Button, der eine Beschriftung anzeigt, die durch ein standardmäßig gesetztes Data Template erweitert wird. Beim MouseOver (also quasi als Hover-Effekt), sollt dieses Data Template ersetzt werden und vor der eigentlichen Beschriftung des Buttons einen anderen Text anzeigen, welcher beim Verlassen wieder zurückgesetzt wird.

Dafür erstellen wir ein Fenster, welches die jeweiligen Data Templates enthält, sowie die Darstellung des Buttons. Hier das Innenleben des Fensters als XAML:
<Window.Resources>
    <DataTemplate x:Key="DefaultTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Default: "/>
            <TextBlock Text="{Binding}"/>
        </StackPanel>        
    </DataTemplate>
    <DataTemplate x:Key="SpecialTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Special: "/>
            <TextBlock Text="{Binding}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<Grid>
    <Button 
        x:Name="TestButton" 
        Content="Test" 
        ContentTemplate="{StaticResource DefaultTemplate}"/>
</Grid>

Damit wären nun die beiden Data Templates definiert und der anzuzeigende Button. Das Template namens DefaultTemplate ist dem Button standardmäßig zugewiesen und setzt der eigentlichen Beschriftung des Buttons ein Default: voraus. Das Template, auf welches bei einem Hover gewechselt werden soll, setzt der eigentlichen Besschriftung ein Special: voraus.

In der Codebehind-Datei werden nun die notwendigen Events abonniert:
  • MouseOver
  • MouseLeft

Befindet sich die Maus über dem Button, soll das spezielle Template angewendet werden. Beim Verlassen der Maus, muss das ursprüngliche Template (also das DefaultTemplate) wieder hergestellt werden. Sehen wir uns dazu den C#-Code an:
public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        this.TestButton.MouseMove += 
            new MouseEventHandler(TestButton_MouseMove);
        this.TestButton.MouseLeave += 
            new MouseEventHandler(TestButton_MouseLeave);
    }

    private void TestButton_MouseMove(
        object sender, 
        MouseEventArgs e)
    {
        TestButton.ContentTemplate = 
            this.FindResource("SpecialTemplate") as DataTemplate;
    }

    private void TestButton_MouseLeave(
        object sender, 
        MouseEventArgs e)
    {
        TestButton.ContentTemplate = 
            this.FindResource("DefaultTemplate") as DataTemplate;
    }
}

Im Konstruktor des Fensters werden die beiden benötigten Events abonniert. In den jeweiligen Events wird nichts anderes gemacht, als in den Ressourcen nach dem gewünschten DatenTemplate zu suchen und es der Eigenschaft ContentTemplate des Buttons zuzuweisen. Idealerweise sollte noch eine Sicherheitsabfrage bezüglich der Existenz der Ressource untergebracht werden.

Damit ist es nun möglich, zur Laufzeit das Data Template eines Elements zu wechseln.

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


WPF Application Lifetime Cycle

26.05.08 - .NET, WPF
Beitrag von Norbert Eder
 Den Lifetime Cycle zu kennen ist eine sehr hilfreiche Sache. Daher hier eine Übersicht, was wann wie in einer WPF-Applikation abläuft:



Wer darauf Rücksicht nimmt, sollte gerade bei der Frage, was in welchen Events zu erledigen ist, keine Probleme mehr haben.

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


Weiter muss es gehen ...

25.05.08 - Blog-Intern
Beitrag von Norbert Eder
 Unter diesem Motto wurde die Sektion WPF wieder um die neuesten Artikel von mir erweitert. Da die Liste nun doch schon etwas länger ist, sollte für die meisten etwas dabei sein.

Sollte ein Artikel/Tutorial fehlen, kann man hier seinen Wunsch abgeben. Mit etwas Glück folgt tatsächlich das Gewünschte.
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter