Archive for the ‘C#’ Category
März 1st, 2008
Bei einem meiner WPF-Projekte ergab sich die Problematik, das ich ein Enum an mehrere RadioButtons binden wollte. Nach recht langer Suche und einigen Versuchen habe ich einen Lösungsweg gefunden, den ich hier an einem kleinen Beispiel zeigen will. Den Source für den ValueConverter habe ich mir nicht ausgedacht. Beim googlen nach der Lösung habe ich durch Zufall diese Seite gefunden und den darauf befindlichen Source verwendet.
Ausgangspunkt ist einen kleine Klasse und ein Enum
public enum ProjectStatus
{
InVorbereitung,
InArbeit,
Abgeschlossen
}
public class Project
{
public string ProjectName { get; set; }
public ProjectStatus Status { get; set; }
}
Read the rest of this entry »
Januar 20th, 2008
Vor ein paar Tagen habe ich mich mal mit der Frage auseinandergesetzt, wie man mit Hilfe der DTE in einen vsPackage Einstellungen ändern kann. Auslöser dafür war der Wunsch meines Kollegen Tobi, die Einstellungen für das Debugging mit Hilfe des SourceServers von Microsoft auf einfache Art und Weise ein und ausschalten zu können. Die Einstellungen jedes Mal über die Tools -> Options anzupassen dauert einfach zu lange.
Einfach ein Visual Studio Integration Package über File->New…->Projects->Extensibility anlegen und in die Methode “MenuItemCallback” folgende Code schreiben bzw. kopieren:
bool? serverSupport = false;
DTE dte = GetService(typeof(DTE)) as DTE;
Properties properties = dte.get_Properties("Debugging", "General");
// suchen der richtigen Einstellungen
foreach (EnvDTE.Property prop in properties)
{
if (prop.Name == "EnableJustMyCode")
{
prop.Value = !Convert.ToBoolean(prop.Value);
serverSupport = !Convert.ToBoolean(prop.Value);
}
if (prop.Name == "EnableSourceServer")
{
if (serverSupport.HasValue)
{
prop.Value = serverSupport.Value;
((MenuCommand)sender).Checked = serverSupport.Value;
}
}
}
Januar 10th, 2008
Beim Versuch mein vsPackage für die Implementierung von Interfaces ein wenig zu erweitern, bin ich auch ein seltsames Problem gestoßen.
Über die vom AddIn erzeugten Getter und Setter wollte ich ein Attribute per Code setzen. Hierfür gibt es eigentlich die Methode “AddAttribute”…Gesagt getan…hier der Code:
CodeFunction getter = prop.Getter;
getter.Attributes("MyAttribute", "myValue", -1);
Der Compiler erzeugt alles ganz brav und startet das vsPackage im Visual Studio Hive. Alles fein…naja vielleicht bis auf, wenn man das AddIn benutzen will.
An besagter Stelle kommt eine sehr aussagekräftige Exception mit der Meldung “Unbekannter Fehler”. Komisch ist nur, das die Methode wohl nur auf den Gettern bzw. Settern(CodeFunction) Probleme macht. Bei “CodeProperty” bzw. “CodeClass” funktioniert alles wunderbar….