Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 176, comments - 234, trackbacks - 93

novembre 2006 Blog Posts

Scrivere un control class converter per VB6(2)XAML

Per tutti coloro i quali sono interessati all'utilizzo ed alla personalizzazione del tools VB6(2)XAML, pubblico un esempio di come possa essere possibile ridefinire il rendering dell'elemento VB.Label con una classe proprietaria. Dopo aver creato un progetto di tipo ClassLibrary, possiamo aggiungere la referenza a VB62XAML.exe nella quale si trova la classe VBControl, dalla quale dovremo ereditare. Implementando un override del metodo RenderToWPF possiamo definire come renderizzare il nostro controllo Label. Nell'esempio che ho riportato sotto, è possibile osservare una tecnica basata sulla creazione "manuale" degli elementi, ed un'altra basata sull'utilizzo di templates che magari possono essere caricati da disco. Imports System.XmlImports CodeSapiens.VB62XAMLPublic Class MyLabel    Inherits CodeSapiens.VB62XAML.VBControl    ''' <summary>    ''' Override base function RenderToWPF and replace with new rendering attributes    ''' </summary>    ''' <param name="document">The XML document that parser passes to classes</param>    ''' <returns>XMLElement representing the control in XML Format</returns>    ''' <remarks></remarks>    Public Overrides Function RenderToWPF(ByVal document As System.Xml.XmlDocument) As System.Xml.XmlElement        'Create element        Dim _item As XmlElement = document.CreateElement("Label")        'Set base positioning attributes        _item.SetAttribute("Name", Helpers.BuildName(Me.Name, Me.Properties))        _item.SetAttribute("Canvas.Left", Helpers.TwipsToPixels(Convert.ToInt32(Me.Properties.GetProperty("Left").Value)))        _item.SetAttribute("Canvas.Top", Helpers.TwipsToPixels(Convert.ToInt32(Me.Properties.GetProperty("Top").Value)))        _item.SetAttribute("Width", Helpers.TwipsToPixels(Convert.ToInt32(Me.Properties.GetProperty("Width").Value)))        _item.SetAttribute("Height", Helpers.TwipsToPixels(Convert.ToInt32(Me.Properties.GetProperty("Height").Value)))        _item.SetAttribute("Content", Me.Properties.GetProperty("Caption").Value)        _item.SetAttribute("Padding", "0,0,0,0")        'Create a document fragment to show another manner of embedding XML in Control Rendering        Dim _docFrag As XmlDocumentFragment = document.CreateDocumentFragment()        Dim _gradientTemplate As String = String.Empty        ' This string could be loaded from disk, and maybe values could be placeholders        ' so we can substitute them at run-time using our special values...        _gradientTemplate = "<Label.Background>" & _                            "    <LinearGradientBrush StartPoint=""0.5,0"" EndPoint=""0.5,1"">" & _                            "       <GradientStop Offset=""0.0"" Color=""LightBlue""/>" & _                            "       <GradientStop Offset=""1.0"" Color=""SlateBlue""/>" & _                            "   </LinearGradientBrush>" & _                            "</Label.Background>"        _docFrag.InnerXml = _gradientTemplate        _item.AppendChild(_docFrag)        'Handle font generation        If Me.Properties.ContainsProperty("Font") Then            Me.RenderFont(Me.Properties.GetProperty("Font"), _item)        End If        Return _item    End FunctionEnd Class...

posted @ mercoledì 29 novembre 2006 17:05 | Feedback (0) | Filed Under [ Tutorials ]

VB6(2)XAML: il convertitore di Forms Visual Basic 6.0

Dopo averlo "coltivato" per le varie CTP di WINFX e .net Framework 3.0, ed aver cercato di realizzare qualcosa di veramente aperto e modificabile, ho deciso di rilasciare gratuitamente il convertitore VB6(2)XAML. Questo convertitore consente di convertire una Form di Visual Basic 6.0 in una Windows di Windows Presentation Foundation, utilizzando XAML come linguaggio di descrizione. Il progetto è MOLTO in beta, nel senso che non è completo e non è testato a fondo... Mi attendo da voi tutti suggerimenti ed idee su cosa implementare e su come farlo per massimizzare le potenzialità di questo strumento. Per il momento, il...

posted @ domenica 26 novembre 2006 19:49 | Feedback (8) | Filed Under [ Tech Tips ]

Powered by:
Powered By Subtext Powered By ASP.NET