.Net Mirco Framework 2007技術大會
2006年在《程式員》雜志上通過看馬甯的專欄文章,第一次知道了.Net MF。一年後的今天終于近距離地接觸了.Net Mirco Frmaework,對MF有了一定的感性認識。
最近公司很多項目都有大量嵌入式裝置使用,由于WinCE系統相對較大,對硬體平台要求過高,是以對.Net MF一直比較關注。今天總算大開眼界了。
微軟公司的Colin Miller和Digi公司的John Leier在上午的演講拉開了.Net MF序幕,針對嵌入式領域,一個從軟體角度進行闡述,另一個從硬體平台角度進行呼應,一軟一硬,二者強強聯合,恐怕未來嵌入式智能裝置一半以上的項目開發要被其收入囊中了。下午的中文演講給人感覺有些幹癟,兩三個演講,平均短短十幾分鐘就草草收場。後來微軟公司杜偉的演講,從VS2005一行行難以看清的代碼,到一個個令人驚豔的樣例把MF開發技術推向最前台。
Digi公司很是有魄力,免費送出15套開發套件(5個作為回答問題的獎品,10個抽獎),自己即沒有回答問題的勇氣,也沒有好的運氣,隻好剩下羨慕的份了。
最後為每個人送出的1G優盤(類似微軟今年MVP大禮包中的優盤)很有分量,不僅是1G的容量,并且裡面竟然把所有的幻燈片拷貝其中,更沒有想到的是,MF 的SDK也在裡面,真棒!
回到家迫不及待裝了一份MF SDK(MicroFrameworkSDK.MSI 區區隻有5998 kb,強!),有模拟器,也有示例。
其中幾個示例不知道為什麼編譯成功,就是運作失敗,對第二示例比較感興趣,可以繪制圖形,并且可以貼圖。
相關代碼如下:
.Net Mirco Framework 2007技術大會 // Copyright (C) Microsoft Corporation. All rights reserved.
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 using System;
.Net Mirco Framework 2007技術大會 using System.Collections;
.Net Mirco Framework 2007技術大會 using System.Threading;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Input;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Hardware;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Presentation;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Presentation.Media;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Presentation.Controls;
.Net Mirco Framework 2007技術大會 using Microsoft.SPOT.Presentation.Shapes;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 using PresentationDemo;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 /**///////////////////////////////////////////////////////////////////////////////
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public sealed class MyApp : Application ...{
.Net Mirco Framework 2007技術大會 // This static field prevents the object from being GC'd
.Net Mirco Framework 2007技術大會 private static GpioButtonInputProvider s_gpioInputProvider;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public Font NinaBFont;
.Net Mirco Framework 2007技術大會 public Font SmallFont;
.Net Mirco Framework 2007技術大會 public Bitmap Snowflake;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 private MyApp() ...{
.Net Mirco Framework 2007技術大會 // Initialize the Buttons/Pins dispatcher
.Net Mirco Framework 2007技術大會 s_gpioInputProvider = new GpioButtonInputProvider(this.Dispatcher, null);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Load some resources
.Net Mirco Framework 2007技術大會 NinaBFont = Resources.GetFont(Resources.FontResources.NinaBFont);
.Net Mirco Framework 2007技術大會 SmallFont = Resources.GetFont(Resources.FontResources.SmallFont);
.Net Mirco Framework 2007技術大會 Snowflake = Resources.GetBitmap(Resources.BitmapResources.Snowflake);
.Net Mirco Framework 2007技術大會 }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected override void OnStartup(EventArgs e) ...{
.Net Mirco Framework 2007技術大會 // Create and set the application's main window
.Net Mirco Framework 2007技術大會 this.MainWindow = new MainMenuWindow(this);
.Net Mirco Framework 2007技術大會 base.OnStartup(e);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public void GoHome() ...{
.Net Mirco Framework 2007技術大會 Buttons.Focus(this.MainWindow); // Set focus back to the main window
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public static void Main() ...{
.Net Mirco Framework 2007技術大會 new MyApp().Run(); // Start the app's main window
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // This is the base class of all our windows; it makes every window visible,
.Net Mirco Framework 2007技術大會 // sets the window's size to the full size of the LCD, and give the window focus
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 internal class PresentationWindow : Window ...{
.Net Mirco Framework 2007技術大會 protected MyApp m_app;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected PresentationWindow(MyApp app) ...{
.Net Mirco Framework 2007技術大會 m_app = app;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Make the window visible and the size of the LCD
.Net Mirco Framework 2007技術大會 this.Visibility = Visibility.Visible;
.Net Mirco Framework 2007技術大會 this.Width = SystemMetrics.ScreenWidth;
.Net Mirco Framework 2007技術大會 this.Height = SystemMetrics.ScreenHeight;
.Net Mirco Framework 2007技術大會 Buttons.Focus(this); // Set focus to this window
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected override void OnButtonDown(ButtonEventArgs e) ...{
.Net Mirco Framework 2007技術大會 // Remove this window form the Window Manager
.Net Mirco Framework 2007技術大會 this.Close();
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // When any button is pressed, go back to the Home page
.Net Mirco Framework 2007技術大會 m_app.GoHome();
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 internal sealed class MainMenuWindow : PresentationWindow ...{
.Net Mirco Framework 2007技術大會 private ListBox m_listbox;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public ListBox MainListBox ...{ get ...{ return m_listbox; } }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public MainMenuWindow(MyApp app)
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 : base(app) ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 Color instructionTextColor = ColorUtility.ColorFromRGB(192, 192, 192);
.Net Mirco Framework 2007技術大會 Color backgroundColor = ColorUtility.ColorFromRGB(26, 118, 183);
.Net Mirco Framework 2007技術大會 Color unselectedItemColor = ColorUtility.ColorFromRGB(192, 192, 255); // Unselected listbox item color
.Net Mirco Framework 2007技術大會 Color selectedItemColor = Colors.White; // Selected listbox item color
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // The Main window contains a veritcal StackPanel
.Net Mirco Framework 2007技術大會 StackPanel panel = new StackPanel(Orientation.Vertical);
.Net Mirco Framework 2007技術大會 this.Child = panel;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // The top child contains text with instructions
.Net Mirco Framework 2007技術大會 TextFlow textflow = new TextFlow();
.Net Mirco Framework 2007技術大會 textflow.TextAlignment = TextAlignment.Center;
.Net Mirco Framework 2007技術大會 textflow.Visibility = Visibility.Visible;
.Net Mirco Framework 2007技術大會 textflow.TextRuns.Add(
.Net Mirco Framework 2007技術大會 new TextRun(Resources.GetString(Resources.StringResources.SelectAnItemFromBelow),
.Net Mirco Framework 2007技術大會 app.NinaBFont, instructionTextColor));
.Net Mirco Framework 2007技術大會 panel.Children.Add(textflow);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Add a blank line to the stack
.Net Mirco Framework 2007技術大會 panel.Children.Add(textflow = new TextFlow());
.Net Mirco Framework 2007技術大會 textflow.TextRuns.Add(" ", app.NinaBFont, instructionTextColor);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // The next child contains a listbox with options
.Net Mirco Framework 2007技術大會 m_listbox = new ListBox();
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Prepare the listbox
.Net Mirco Framework 2007技術大會 Buttons.Focus(m_listbox);
.Net Mirco Framework 2007技術大會 panel.Children.Add(m_listbox);
.Net Mirco Framework 2007技術大會 this.Background = m_listbox.Background = new SolidColorBrush(backgroundColor);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 m_listbox.SelectionChanged += delegate(Object sender, SelectionChangedEventArgs e) ...{
.Net Mirco Framework 2007技術大會 Int32 previousSelectedIndex = e.PreviousSelectedIndex;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 if (previousSelectedIndex != -1) ...{ // If there was a previous index
.Net Mirco Framework 2007技術大會 // Change previously-selected listbox item color to unselected color
.Net Mirco Framework 2007技術大會 ((Text)m_listbox.Items[previousSelectedIndex].Child).ForeColor = unselectedItemColor;
.Net Mirco Framework 2007技術大會 }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Change newly-selected listbox item color to selected color
.Net Mirco Framework 2007技術大會 ((Text)m_listbox.Items[e.SelectedIndex].Child).ForeColor = selectedItemColor;
.Net Mirco Framework 2007技術大會 };
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Add the items to the listbox
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 foreach (String s in new String[] ...{ "Vertical Stack", "Horizontal Stack", "Canvas", "Diagonal" }) ...{
.Net Mirco Framework 2007技術大會 Text text = new Text(m_app.NinaBFont, s + " Panel Demo");
.Net Mirco Framework 2007技術大會 text.ForeColor = unselectedItemColor;
.Net Mirco Framework 2007技術大會 text.TextAlignment = TextAlignment.Center;
.Net Mirco Framework 2007技術大會 text.Width = this.Width;
.Net Mirco Framework 2007技術大會 ListBoxItem lbi = new ListBoxItem();
.Net Mirco Framework 2007技術大會 lbi.Background = m_listbox.Background;
.Net Mirco Framework 2007技術大會 lbi.Child = text;
.Net Mirco Framework 2007技術大會 m_listbox.Items.Add(lbi);
.Net Mirco Framework 2007技術大會 }
.Net Mirco Framework 2007技術大會 m_listbox.SelectedIndex = 0;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Add a blank line in the stack
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // The bottom child contains text with return instructions
.Net Mirco Framework 2007技術大會 textflow = new TextFlow();
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 new TextRun("(After viewing a Panel Demo, hit Enter to return to this screen)",
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // If <Enter> button is pressed, go into the selected demo
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 if (e.Button == Button.Select) ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 switch (MainListBox.SelectedIndex) ...{
.Net Mirco Framework 2007技術大會 case 0: // Vertical Stack Panel Demo
.Net Mirco Framework 2007技術大會 new StackPanelDemo(m_app, Orientation.Vertical);
.Net Mirco Framework 2007技術大會 break;
.Net Mirco Framework 2007技術大會 case 1: // Horizontal Stack Panel Demo
.Net Mirco Framework 2007技術大會 new StackPanelDemo(m_app, Orientation.Horizontal);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 case 2: // Canvas Panel Demo
.Net Mirco Framework 2007技術大會 new CanvasPanelDemo(m_app);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 case 3: // Diagonal Panel Demo
.Net Mirco Framework 2007技術大會 new DiagonalPanelDemo(m_app);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Don't call base implementation (base.OnButtonDown) or we'll go back Home
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected override void OnGotFocus(FocusChangedEventArgs e) ...{
.Net Mirco Framework 2007技術大會 // Whenever this window gets focus, it gives it to its listbox
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 base.OnGotFocus(e);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 internal sealed class StackPanelDemo : PresentationWindow ...{
.Net Mirco Framework 2007技術大會 // This class shows how to build your own shape drawing in a DrawingContext
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 private sealed class Cross : Shape ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public Cross() ...{ }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public override void OnRender(DrawingContext dc) ...{
.Net Mirco Framework 2007技術大會 // Draw a line from top, left to bottom, right
.Net Mirco Framework 2007技術大會 dc.DrawLine(base.Stroke, 0, 0, Width, Height);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // Draw a line from top, right to bottom, left
.Net Mirco Framework 2007技術大會 dc.DrawLine(base.Stroke, Width, 0, 0, Height);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public StackPanelDemo(MyApp app, Orientation orientation)
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 StackPanel panel = new StackPanel(orientation);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 panel.Visibility = Visibility.Visible;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 Shape[] shapes = new Shape[] ...{
.Net Mirco Framework 2007技術大會 new Ellipse(),
.Net Mirco Framework 2007技術大會 new Line(),
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 new Polygon(new Int32[] ...{ 0, 0, 50, 0, 50, 50, 0, 50 }), // A Square
.Net Mirco Framework 2007技術大會 new Rectangle(),
.Net Mirco Framework 2007技術大會 new Cross() // Our own custom shape
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 for (Int32 x = 0; x < shapes.Length; x++) ...{
.Net Mirco Framework 2007技術大會 Shape s = shapes[x];
.Net Mirco Framework 2007技術大會 s.Fill = new SolidColorBrush(ColorUtility.ColorFromRGB(0, 255, 0));
.Net Mirco Framework 2007技術大會 s.Stroke = new Pen(Color.Black, 2);
.Net Mirco Framework 2007技術大會 s.Visibility = Visibility.Visible;
.Net Mirco Framework 2007技術大會 s.HorizontalAlignment = HorizontalAlignment.Center;
.Net Mirco Framework 2007技術大會 s.VerticalAlignment = VerticalAlignment.Center;
.Net Mirco Framework 2007技術大會 s.Height = Height - 1;
.Net Mirco Framework 2007技術大會 s.Width = Width - 1;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 if (panel.Orientation == Orientation.Horizontal)
.Net Mirco Framework 2007技術大會 s.Width /= shapes.Length;
.Net Mirco Framework 2007技術大會 else
.Net Mirco Framework 2007技術大會 s.Height /= shapes.Length;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 panel.Children.Add(s);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 internal sealed class CanvasPanelDemo : PresentationWindow ...{
.Net Mirco Framework 2007技術大會 public CanvasPanelDemo(MyApp app)
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 Canvas canvas = new Canvas();
.Net Mirco Framework 2007技術大會 this.Child = canvas;
.Net Mirco Framework 2007技術大會 this.Background = new SolidColorBrush(ColorUtility.ColorFromRGB(0, 255, 255));
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 for (Int32 x = 0; x < Width; x += Width / 4) ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 for (Int32 y = 0; y < Height; y += Height / 4) ...{
.Net Mirco Framework 2007技術大會 Text text = new Text(m_app.SmallFont, " (" + x + "," + y + ")");
.Net Mirco Framework 2007技術大會 Canvas.SetLeft(text, x);
.Net Mirco Framework 2007技術大會 Canvas.SetTop(text, y);
.Net Mirco Framework 2007技術大會 canvas.Children.Add(text);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 internal sealed class DiagonalPanelDemo : PresentationWindow ...{
.Net Mirco Framework 2007技術大會 public DiagonalPanelDemo(MyApp app)
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 DiagonalPanel panel = new DiagonalPanel();
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 this.Background = new LinearGradientBrush(
.Net Mirco Framework 2007技術大會 ColorUtility.ColorFromRGB(192, 0, 0), ColorUtility.ColorFromRGB(32, 0, 0), 0, 0, Width, Height);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 for (Int32 x = 0; x < 4; x++) ...{
.Net Mirco Framework 2007技術大會 Bitmap b = new Bitmap(Width / 4, Height / 4);
.Net Mirco Framework 2007技術大會 b.StretchImage(0, 0, app.Snowflake, b.Width, b.Height, (UInt16)((x + 1) * 50));
.Net Mirco Framework 2007技術大會 Image image = new Image(b);
.Net Mirco Framework 2007技術大會 panel.Children.Add(image);
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 // This class shows how to build your own Panel
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 private sealed class DiagonalPanel : Panel ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 public DiagonalPanel() ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected override void MeasureOverride(int availableWidth, int availableHeight, out int desiredWidth, out int desiredHeight) ...{
.Net Mirco Framework 2007技術大會 // Called to calculate the width/height desired
.Net Mirco Framework 2007技術大會 desiredWidth = 0;
.Net Mirco Framework 2007技術大會 desiredHeight = 0;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 foreach (UIElement child in Children) ...{
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 if (child.Visibility != Visibility.Collapsed) ...{
.Net Mirco Framework 2007技術大會 child.Measure(Int32.MaxValue, Int32.MaxValue);
.Net Mirco Framework 2007技術大會 Int32 childWidth, childHeight;
.Net Mirco Framework 2007技術大會 child.GetDesiredSize(out childWidth, out childHeight);
.Net Mirco Framework 2007技術大會 desiredWidth += childWidth;
.Net Mirco Framework 2007技術大會 desiredHeight += childHeight;
.Net Mirco Framework 2007技術大會 }
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 protected override void ArrangeOverride(int arrangeWidth, int arrangeHeight) ...{
.Net Mirco Framework 2007技術大會 Int32 x = 0, y = 0;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 child.Arrange(x, y, childWidth, childHeight);
.Net Mirco Framework 2007技術大會 x += childWidth;
.Net Mirco Framework 2007技術大會 y += childHeight;
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會
.Net Mirco Framework 2007技術大會 後記:此外在會上還遇到了我的偶像馬甯、馬琪、張欣(還是張欣強,通過回答問題獲得一個MF開放套件),如果他們不介意附上照片作個留念:-)