-
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.
|
Local History Feature unter Visual Studio 2005
13.11.07 - .NET, Visual Studio, Tools, 3rd Party Tools Beitrag von Norbert Eder| | Unter Eclipse gibt es ein nettes Feature welches sich Local History nennt. Beim Speichern einer geänderten Klasse wird im Hintergrund ein Version dieser Datei mit Zeitstempel in einen History-Container gelegt. Werden nun erneut Änderungen gemacht, die eventuell umfangreich sind und durch einen Gedankenfehler eventuell rückgängig gemacht werden wollen (inzwischen bereits einige Male gespeichedrt), kann eine alte Version aus der lokalen History bezogen werden und der alte Stand ist somit wieder hergestellt.
Diese Funktion fehlt bei Visual Studio und daher hatte ich bereits an ein kleines Projekt diesbezüglich gedacht. Glücklicherweise habe ich mich jedoch vorher auf die Suche gemacht und ein wirklich nettes Add-In für Visual Studio gefunden:
Visual Local History 2005
Aufgepasst: Das Add-In ist noch im Beta-Stadium und daher ist Vorsicht geboten.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Geschafft es ist!
11.11.07 - Blog-Intern Beitrag von Norbert Eder| | "Es" ist geschafft und ich auch. Nach zwei Tagen heftigen Umzuges kann ich mich nun endlich in meiner neuen Wohnung austoben. Es hat sich ja nun schon über mehrere Wochen hingezogen, viel musste erledigt werden, aber jetzt nimmt hoffentlich bald wieder alles normale "Formen" an und es wird wieder etwas ruhiger.
Fotos gibt es keine, denn dieses Chaos möchte ich niemandem zumuten :)
| | | 6 Kommentare
- 785 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Oktober 2007 im Rückblick
07.11.07 - .NET, Grundlagen, Base Framework, WPF, Allerlei Beitrag von Norbert Eder
WPF: ListBox um Grafiken/Images erweitern
07.11.07 - .NET, WPF Beitrag von Norbert Eder| | Die Standard-ListBox unter WPF ist dann ein doch eher fades Steuerelement. In den meisten Fällen wird man mit den angebotenen Möglichkeiten nicht auskommen, daher muss es angepasst bzw. erweitert werden. Dieser Artikel zeigt, welche Schritte vorgenommen werden müssen, um folgendes Aussehen zu erhalten:
Normalerweise werden mit Hilfe der ListBox ListBoxItems (es können auch andere Child-Elemente sein) angezeigt. Diese besitzen eine Eigenschaft Content. Darüber kann nun der anzuzeigende Text dargestellt werden. Für dieses Beispiel werden jedoch zwei Strings benötigt und ein Image.
Betreffend der Strings können wir ein simples Datenobjekt erstellen und an die ListBox binden.
using System;
using System.Collections.Generic;
using System.Text;
namespace ListBoxSampleApp
{
public class DataItem
{
private string _title = null;
private string _description = null;
public string Title
{
get { return this._title; }
set { this._title = value; }
}
public string Description
{
get { return this._description; }
set { this._description = value; }
}
public DataItem() { }
public DataItem(
string title,
string description)
{
_title = title;
_description = description;
}
}
}
Die Bindung der Daten als auch das Einbinden der Grafik erfolgt an der gleichen Stelle. Hierzu muss eine Ressource erstellt werden, in der ein DataTemplate definiert wird. Dieses Template beschreibt in unserem Fall das Aussehen eines Eintrages in der ListBox.
<Window.Resources>
<DataTemplate x:Key="ListItemTemplate">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Image
Source="GoLtrHS.png"
Grid.Column="0"
Grid.RowSpan="2"/>
<TextBlock
Text="{Binding Path=Title}"
Grid.Column="1"
Grid.Row="0"
FontWeight="Bold"/>
<TextBlock
Text="{Binding Path=Description}"
Grid.Column="1"
Grid.Row="1" />
</Grid>
</StackPanel>
</DataTemplate>
</Window.Resources>
Wie zu sehen ist wird der Eintrag für unsere ListBox aus einem StackPanel und einem Grid erzeugt. Das Grid besitzt insgesamt zwei Zeilen und zwei Spalten. In der ersten Spalte wird nun unsere Grafik angezeigt (die Grafik wurde in das Projekt eingefügt und steht somit zur Verfügung). Durch die Angabe der RowSpan erstreckt sich die Grafik über beide Zeilen. In der zweiten Spalte ist für jede Zeile ein TextBlock zu finden. Diese enthalten jeweils ein Binding auf Eigenschaften aus dem zuvor definierten Datenobjekt: einmal für den Titel und einmal für die Beschreibung.
Wenn dieser Schritt erledigt ist, muss nur noch der ListBox mitgeteilt werden, dass das erstellte Template für die Anzeige der Items verwendet werden soll. Dies geschieht in der Eigenschaft ItemTemplate der ListBox.
<ListBox
RenderTransformOrigin="0.5,0.5"
Cursor="Arrow"
x:Name="MainListBox"
Background="#FFFFFFE0"
BorderBrush="#FFCCCCCC"
BorderThickness="1,1,1,1"
FontFamily="Arial"
FontSize="16"
IsSynchronizedWithCurrentItem="True"
Margin="8,8,8,29"
d:LayoutOverrides="GridBox"
ItemTemplate="{StaticResource ListItemTemplate}">
</ListBox>
Um dies testen zu können, müssen nur noch Testdaten erstellt und an die ItemSource-Eigenschaft der ListBox gebunden werden.
[html]
public Window1()
{
this.InitializeComponent();
Fillup();
}
private void Fillup()
{
List<DataItem> itemList = new List<DataItem>();
DataItem di1 = new DataItem("Testeintrag", "Beschreibung zum Item");
DataItem di2 = new DataItem("Testeintrag 2", "Beschreibung zum Item");
itemList.Add(di1);
itemList.Add(di2);
MainListBox.ItemsSource = itemList;
}
Fertig ist die angepasste WPF-ListBox.
| | | 2 Kommentare
- 963 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
WPF: Bewegliche Grid-Spalten - GridSplitter Beispiel
06.11.07 - .NET, WPF Beitrag von Norbert Eder| | Wer braucht sie nicht? Vergrößerbare Bereiche. Mit Hilfe des GridSplitters kann dies sehr einfach gelöst werden. Hierzu sind die entsprechenden Spalten (funktioniert auch auf Zeilen) zu definieren und ein GridSplitter zu verwenden. Dem GridSplitter muss nun noch mitgeteilt werden, zwischen welchen Spalten er sich befindet. Hier gleich ein Beispiel:
<Window x:Class="GridSplitterSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="GridSplitterSample"
Height="300"
Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Background="Yellow" Grid.Column="0"/>
<GridSplitter Grid.Column="0" Width="2" />
<Label Background="Green" Grid.Column="1"/>
</Grid>
</Window>
Wer dies testen möchte: eine leere WPF-Anwendung erstellen und den obigen Sourcecode in die Window1.xaml kopieren, starten und probieren. Das Ergebnis sieht übrigens so aus:
Durch den Splitter können nun die einzelnen Spaltengrößen verändert werden:
| | | 2 Kommentare
- 696 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
WPF: CornerRadius - nicht alle Ecken abrunden
06.11.07 - .NET, WPF Beitrag von Norbert Eder| | Mit Hilfe von CornerRadius ist es beispielsweise sehr einfach möglich, die Ecken eines Rechtecks abzurunden. Ein mögliches Beispiel ist hier gegeben:
<Window x:Class="CornerRadiusSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="300"
Width="300">
<Grid>
<Label
Background="Blue"
Name="TestLabel"
Width="100"
Height="100">
<Label.Template>
<ControlTemplate>
<Border
BorderThickness="1"
Padding="0,10,0,10"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="15"/>
</ControlTemplate>
</Label.Template>
</Label>
</Grid>
</Window>
Und so sieht es aus:
Nun kommt es irgendwann zu dem Fall, dass nicht alle Ecken abgerundet werden sollen, sondern nur bestimmte. Hierfür kann man der Eigenschaft CornerRadius die Werte für jede einzelne Ecke setzen:
<Window x:Class="CornerRadiusSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="300"
Width="300">
<Grid>
<Label
Background="Blue"
Name="TestLabel"
Width="100"
Height="100">
<Label.Template>
<ControlTemplate>
<Border
BorderThickness="1"
Padding="0,10,0,10"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="0,15,0,15"/>
</ControlTemplate>
</Label.Template>
</Label>
</Grid>
</Window>
Das sieht dann so aus:
Dieser Schritt kann natürlich auch auf andere Controls, wie beispielsweise der ListBox angewandt werden.
| | | 1 Kommentar
- 6793 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Artikel: Windows Live ID Development
05.11.07 - .NET, WPF, ASP.NET, Allerlei Beitrag von Norbert Eder| | In der aktuellen Ausgabe der Visual Studio One findet sich wieder ein Artikel von mir. Diesmal zum Thema Windows Live ID Development.
Zahlreiche Benutzeraccounts auf verschiedensten Websites, mit verschiedenen Benutzernamen und unterschiedlichsten Passwörtern- kaum eine Chance, sich diese ohne ein Hilfsmittel zu merken. Dieser Artikel zeigt Ihnen, wie Sie Ihre eigenen Websites mit einer Windows-Live-ID-Anmeldung ausstatten können, um dem Benutzer den Weg zu einer einzigen Anmeldekombination zu ebnen.
| | | Kommentar hinzufügen
| 0 Trackbacks
| Permalink | Trackback-URL |
Die dunkle Seite der Macht sei mit dir ...
02.11.07 - .NET, Visual Studio Beitrag von Norbert Eder
Das darf doch alles gar nicht wahr sein!
02.11.07 - .NET, Visual Studio Beitrag von Norbert Eder| | Hier hatte ich ja ein wenig über mein aktuelles Visual Studio 2005 geplaudert. Nachdem es nicht zu bewegen war zu funktionieren hatte ich das komplette Visual Studio 2005 deinstalliert und nochmal neu auf die Maschine gespielt. Im Endeffekt wurden STUNDEN investiert um jetzt wieder vor dem gleichen Problem zu stehen ... das darf jetzt wirklich nicht wahr sein ... was kann es da bloß haben ...
Edit: So, jetzt konnte ich das Problem endlich lösen. Aufpassen sollten die Personen, die sich nette VMWare Dinge installieren, dann wieder deinstallieren weil man sie dennoch nicht benötigt und im Endeffekt ein Visual Studio Add-In namens VMDebugger - Visual Studio Integrated Virtual Machine Debugger ungefragt installiert. Blöd nur, wenn das übrig bleibt nach der Deinstallation. Die Lösung besteht im Endeffekt darin, folgenden Registry Key zu löschen:
HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> VisualStudio -> 8.0 -> Addins -> VMDebugger.Connect
| | | 2 Kommentare
- 564 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL |
Microsoft, Community und was dazu zu sagen ist ...
01.11.07 - Blog-Intern, .NET, Allerlei, Internet, Community, Kunterbunt Beitrag von Norbert Eder| | Ein Blog habe ich ja mittlerweile seit über 4 Jahren. Seit mittlerweile 2 Jahren beschäftige ich mich ausschließlich mit Technologien rund um .NET und dem SQL Server (wobei meist weniger SQL Server und viel mehr .NET).
Die Frage die sich mir stellt ist einfach: Warum tut man sich soviel Community-Arbeit eigentlich an? Schließlich ist ja doch einiges zu tun. Immer steht man irgendwie im Mittelpunkt (oder auch nicht). Man schreibt News, verfasst Beiträge um anderen zu helfen (wenn nicht gleich, dann vielleicht einige Wochen oder Monate später wenn sie per Google, Live Search etc. auf das Blog kommen). Es werden Artikel, Tutorials verfasst und seit Jänner gibt es dann auch noch die Projekte Livecasts, Podcast und das .NET BlogBook.
Erwartungshaltung
Bei allem was der Mensch tut hat er eine Erwartungshaltung. Bewusst oder unbewusst. Meine Beweggründe kann ich kaum beschreiben. Vielleicht ist es Anerkennung, vielleicht möchte ich auch nur einfach anderen Menschen helfen. Wahrscheinlich ist es jedoch eine Mischung aus beidem. Sehr wahrscheinlich sogar. Auf jeden Fall werden Projekte gestartet um Wissen zu verbreiten, um die gesamte Community zu stärken. Schließlich sitzt man selbst mitten in dieser Community und stärkt sich damit auch selbst.
Wie überall gibt es auch in einer Community sogenannte Leithammel. Alpha Geeks, Personen, die frühzeitig Wissen über neue Technologien, Erkenntnisse etc. weitergeben. Eine Weitergabe dieser Informationen erfolgt meist nicht komplett selbstlos. Wieder kommt das Thema Anerkennung hoch. Oder vielleicht liegt es auch daran, zu zeigen, dass man die aktuellen bzw. die künftigen Technologien im Griff hat und somit auch die Möglichkeit hat, Projekte umzusetzen, die andere vielleicht noch nicht umzusetzen vermögen.
Tatsache
ABer wie sieht das in der Realität aus? In meinem Fall kann ich sagen: Die Downloadzahlen sind gut. Ja, auch sind es einige hundert Besucher täglich, die sich an den bereitgestellten Informationen bedienen. Aber dann gibt es auch noch etwas anderes. Die Community wird immer gesehen als eine Einheit aller .NET Entwickler. Ist sie das? Nein. Eigentlich sind es einige Personen, die Informationen verbreiten und somit anderen Entwicklern das Leben ungemein erleichtern. Schließlich steht man dann nicht vor einem Problem, das noch niemand gelöst hat. Es gibt bereits eine Lösung, man muss nur noch das richtige Blog finden.
So gesehen: Die Community wird dargestellt von einigen wenigen Personen die alles hoch halten, die in der ersten Reihe dahinschreiten. Mit welchem Lohn? Nun, die einen schreiben Artikel und verdienen sich dadurch ein schönes Beibrot, die anderen schreiben gar Bücher, stecken hunderte von Stunden hinein, um mäßige Verkaufszahlen zu erreichen und ganz andere helfen Usern in Newsgroups, auf Foren, um dann irgendwann einen MVP (Microsoft Most Valuable Professional) zu erhalten.
Und hier ist mir gerade der MVP ein absolut großer Dorn im Auge, der allerdings auch sehr viel von der Community widerspiegelt. Ein Most Valuable Professional, als jemand der wirklich Ahnung vom Thema hat, eine Auszeichnung die es für genau ein Jahr gibt und dann erneuert wird, oder vergeht. Je nachdem wie sehr man sich in der Community auch angestrengt hat. Wie wird man ein MVP? Nun, darüber gibt es ohnehin einige Abhandlungen im Internet, die darüber berichten, wie sehr man sich in Newsgroups etc. hervortun muss (also anderen Personen helfen muss) um in den Genuß dieses "Titels" und der damit zusammenhängenden Vorteile zu gelangen. Soweit ist ja alles noch in Ordnung. Aber anscheinend ist hier nicht ein Gremium bestellt, welches nach aufgestellten Regeln diesen Titel vergibt. Nein, meinem Wissensstand zufolge kann nur jemand MVP werden, der von einem anderen MVP vorgeschlagen wird. Hmm ... klingt doch irgendwie nach Freunderlwirtschaft (für die deutschen Freunde: Kontakte ist das was zählt und nicht die Leistung). Ich kenne einige amerikanische MVPs und ja, die haben auch durchaus einiges drauf. Im Gegenzug kenne ich einige deutschsprachige, die ihre Informationen nicht sofort abrufen können, sondern aus diversen Büchern beziehen und dies weitergeben - und das ist noch nett formuliert. Mich bitte an dieser Stelle nicht falsch verstehen. Auch im deutschsprachigen Raum gibt es Meister, Personen die ihr Fach verstehen und die zu Recht MVP sind. Es gibt jedoch auch viele, die gerade ein paar Monate auf der Bildfläche sind, kaum etwas geleistet haben und doch schon ganz hoch gehandelt werden. Warum auch immer.
Fazit
Mein Fazit ist, dass es durchaus lustig ist, etwas für die Community zu tun, abe rman darf keinerlei Erwartungshaltung haben. In welche Richtung auch immer. Ein simples "Danke" ist kaum zu hören. Von den vorhandenen Größen der Szene wird man ohnehin ignoriert (schließelich haben ja die einigen doch Angst einen Konkurrenten zu bekommen) und Leistungen werden durchaus nicht anerkannt. Das wirklich Schlimme jedoch ist, dass gerade die Community so extrem hochgelobt wird und diese tatsächlich aus ein paar hochgepushten Personen besteht. Mehr nicht.
Mittlerweile kenne ich die Szene ganz gut, habe dort meine Freunde, dort Bekannte und kenne auch viele meiner Leser - zwar nicht persönlich aber zumindest doch per Mail. Die Unnahbarkeit ist für viele ein Problem. MVPs, Developer Evangelists usw. die einen Vortrag halten, locker, lässig, aber dann doch weit entfernt von den wirklichen Entwicklern. Das ist wirklich schade und darüber sollte man sich einmal Gedanken machen.
Sicherlich mache ich mir mit dieser Post keine Freunde. Das ist auch nicht im meinem Sinne. Ich stehe dafür Dinge offen anzusprechen, aber Tatsache ist für mich, dass Personen, die für die Community Projekte ins Leben zu rufen, ohne egoistische Träume zu verfolgen absolut vernachlässigt werden, während andere hochgelobt werden und niemand weiß warum. Das kann es einfach nicht sein und hier wird es auch irgendwann einmal einen gewaltigen Bruch geben. Wie dieser aussieht, was sich ändern wird, das vermag wohl niemand zu sagen, aber ein wenig mehr Transparenz wäre wohl in einigen Belangen durchaus gefragt ....
| | | 19 Kommentare
- 905 mal angesehen
| 0 Trackbacks
| Permalink | Trackback-URL | Zurück Weiter
|
|
|
|
|
|
|