Yesterday I have a time to let some folks know about WPF, cause only one day, guess not to satisfied since I could not shared as lot as I know, I believe If I can help someone about it , it will help me also to knew better kind of knowledge.
Some part that's shows yesterday was:
- WPF Concept
- XAML + Analogy
- Layout + Composition + Binding
- Style + Data Template + Control Template ( I feel that we need this session more deeply and so it does with binding sesion)
- Simple Animation
- Some demo samples from AvalonPatien + my latest project as well + my best practice sample
- 1 Video
- 1 Labs How WPF do with Astoria
I thought knowing the XAML is important rather know how to use Blend... since it concern on XAML I've asked them to used KAXAML and VS08, (I believe they will do more better when playing with blend, after knew how do XAML in right way).
Hi Teddy+Maria(jatis), Yoga , Benny, Juneidi , Agung, Wawan (wa-one), Mr. Gunawan ( whom expect silverlight ..) thanks for let me share for you guys... and so Satria + Norman from MS.. he guys...you're pushing me again... thank u.
I wish I could have another oppty to explain better way and to describe wpf more deeply.
-Malky
And not forget to mention pak tennis who helping installed all tools for all pc < He ngana pe wullur kita sama jo!, sorry pak saya menado card *>
* Menado Card -> Anak keturunan menado , tp gak pernah bisa bicara manado dan Sering ke Manado.. <Sorry pa Kita cuma sekali jo..liat kita pe papah punya tanah <that's because he passed away....>
As you know doing with wpf, you'll see the common XAML specification rules that map .NET namespace like this:
The things you should understand that the root object element in XAML file at lease must specify at one (1) XML namespace used to qualify itself and any child elements.
how about its companion (it usually come up and add automatically with VS2008, when you're adding new window , page or even usercontrol )
This is XAML language namespace which maps to type in System.Windows.Markup namespace, it also define some directives for XAML compiler or parser. Note that: it appears as attributes to XML element for a while look like properties but actually are Not! anyway it just a convention like in c# using System; directive or event in VB imports System.
If you need to test your code <it might be usefull sometimes, which I don't recommend it under serious apps> , Create a new project from visual studio just point to new WPF application or open your saved project. After that add new item under your selected project, under wpf select class or flowdocument , after new class or new flowdocument appear, just replace all the code on your new class/flowdocument with this code below. ( when you're create a new class make sure it save with xaml extention file , mine in this sample named Tes.XAML)
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="50" Content="Hello Click Me Please !" />
Just after you're saved this xaml file, now you can test it as your StartupURI and run it. It should appears like this :
note that the runtime compiler know how to show the button, it not show only the button, instead it automaticly use the page class as parent container of the button, if you open this xaml file using IE , you will also see almost the same result :
But the point when test this result is, if you open your solution explorer, under obj\debug (make sure you already click 'show all buttons' on solution explorer toolbar), you'll see similar result as I have, in picture below:
If you're notice, the parser and compiler create another file respectively, since I have App.xaml it will have App.g.cs so Windows1.g.cs and not for Tes... other things is compiler also create BAML (Binary Application Markup Languange) which xaml file that compiled, including Tes.Baml and Window1.Baml, this BAML file actually will embedding in assembly being built, and performing the plumbing that connect to XAML (using procedure code..sure!)
Back to our sample, we'll learn interesting point when we create a event handler for our Tes.xaml file.
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Tes"
Width="200" Height="50" Content="Hello Click Me Please !" Click="Click_This" >
<x:Code>
<![CDATA[
void Click_This(object sender, RoutedEventArgs e)
{
MessageBox.Show("XAML IS COOL !");
}
]]>
</x:Code>
</Button>
I've added couple things now, you see that the Italic and bold was new declarative, eventhandler and code:
- x:Class="Tes", tell the compiler that I have declared Tes class under my XAML
- Create a new click event handler for button that point to click_this procedure
- Add <x:Code> , meaning that embeds procedural code to be inserted into the class specified by x:Classname (in this sample x:Tes)
You can try to run it, and click the button it should have result this:
Now the interesting part is, again open your solution explorer, you notice that Tes.BAML also companion with Tes.g.cs
If you try to open again the Tes.xaml, the parser will give error that you have to compiled the specified events, that means that the parser is only responsible to render the xaml not the procedural code. ( Btw WPF support run on Browser that's called XBAP, XAML Browser Application )
Conclusion
- One XAML should specify at least one XML namespace
- Pure XAML without proc should appear with Browser
- compiler will create xx.g.cs (for c#) so it does with vb I guess xx.gc.vb, when x:class declarative was inserted
- IMHO, writing proc code inside XAML is not recommended since misleading with the natural strategy to divide Designer and developer as ASP.NET has !!
All the vampires walkin' through the valley
Move west down Ventura Boulevard
And all the bad boys are standing in the shadows
And the good girls are home with broken hearts
Free Yes I'm free... Free fallin............If you know song from Tom Petty and Heartbreaker that's the song That I'm feel right now...
Perhaps it's time to share about what I know little bit about WPF...
Oh my 3 December 08... was the day of my life... first of all "WPF" apps that we've built made the minister amazed so all the top official was giving applause when the presentation is closed, second we also have a credit by Microsoft Indonesia for the best Micro ISV, the third one is bonus ..get sleep as much as I could after tortured with tight schedule and lot's of pressure.
When yesterday morning comes I've still debug my apps at 5.30 AM, make sure it works fine for 8.00 AM presentation, although my schedule was get slept at 4.00 AM ( it turn out that I've got my free slept at 16.00 ) btw my debugging is painless while I'm powered with HP nw8600 Workstation (4 XEON proc + 4 GB RAM + NVidia QUATRO 512 MB )
In the last 4-5 months I deal with WPF seriously, Adam Nathan's books was the one that I've brought everyday and everywhere... my default browser site is "wpf msdn forum" .. and my tools in VS2008, Blend, KAXAML, Reflector and not to forget SQL Server 05/08.
I'm not saying that it's over yet, it just the beginning to reach another set of goals... one of my goals is just simply make WPF and Silverlight as one of our specialized, and much help others to use both of them to know as much as I do.......
Thanks for my family <my beloved wife and 2 princess 4 understood my crazy work time>, my team Mario , Iksan, pojok.com at dep...nas <Pak ade, Bu Retno, Boss Manik, Abang, Heru (Agus....oh guss), Aing, fu-kleb, dil-dil, danny.. and others..> not to forget Risman, Norman, Satria from Microsoft thanks to encourage us (while we go down) for make it happen with ISV Empower products and lots of inspired...........