[Silverlight][WPF][C#] 我要的是控制項,不是資料啊!! - 正確取出經由資料繫結所產生的控制項的方式

  • 8086
  • 0
  • C#
  • 2013-07-15

我們常常透過由ItemsControl衍生出的的控制項,透過Silverlight或WPF強大的資料繫結功能,顯示一整個集合的資料。對於設計師來說,使用Blend來設計資料被繫結到某個控制項中的外觀,是再簡單也不過的。但是對於程式設計師來說,如果是對Silverlight或WPF還不夠熟練的話,要從程式中去取出某個被繫結後的控制項,可能就會在剛開始的時候碰得滿鼻子灰了。

 

[IADP] Intel AppUp Developer Program簡介一文中簡單的介紹過了IADP,這次就來跟各位朋友們分享進行開發前最重要的步驟:下載及安裝IADP SDK。

首先登入到IADP開發者首頁,看到左下角,有個Get the SDK的按鈕(什麼!?你還沒註冊帳號!?快去註冊一個吧!!沒登入是看不到後面的東西的喔!!)

image

按下了Get the SDK鈕之後,會看到如下的畫面,這時候就依照自己想開發的平台種類進行下載吧~(這次就以我比較熟悉的.Net平台來做示範)

image

基本上,如果要進行.Net平台的開發,至少一定得下載並安裝SDK 1.1.1 for .Net,而另一個VS的Plug-in就可以自行決定要不要安裝囉~

 

安裝SDK

接下來先進行SDK 1.1.1 for .Net的安裝!!直接執行下載回來的AppUpSDK_CLR_v1.1.1.msi,會看到下圖的歡迎畫面,這邊直接按下下一步就行了。

image

授權條款,勾選接受授權協議後按下下一步按鈕。

image

再來是安裝路徑的設定,直接使用預設的路徑即可,下一步~

image

在看到這個畫面之前會先安裝C++的執行期環境,看到這個畫面就給他Install鈕按下去吧!!

image

看到下面的畫面給他Finish鈕用力的按下去,就大功告成啦~

 image

到安裝路徑下看看,就會發現原來裝了SDK,就會一併安裝幾個範例程式和發開指南文件喔,簡單的看看裡面有哪些東西:

image

只要我們在專案中手動引用lib資料夾中的AdpLibrary.dll就可以享用IADP的SDK所提供的功能啦!!~

而在安裝路徑下的Tools\Debugger中,可以看到供Debug使用的工具(裡面檔案超多的啊~不過主要的執行檔是iADP_ATDS.exe,執行的畫面如下)。

image

 

牛刀小試

安裝完了SDK,當然是要來寫個簡單的應用程式測試一下囉!!打開VS2010,建立一個.Net Framework 3.5版的C# WPF Application來試看看吧!!

image

專案建立完成之後,別忘了加入IADP SDK函式庫的引用喔!!

image

接著我直接照抄SDK範例中部份的程式碼,來寫個簡單的Hello IADP,看看能不能正確的運作(記得要using com.intel.adp喔)~

MainWindow.xaml

<Window x:Class="IadpTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Welcome" Height="23" Margin="0" Name="btn_Welcome" 
                VerticalAlignment="Center" HorizontalAlignment="Center" Width="75" Click="btn_Welcome_Click" />
    </Grid>
</Window>
MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using com.intel.adp;


namespace IadpTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        AdpApplication _app;

        public MainWindow()
        {
            InitializeComponent();

            try
            {
                _app = new AdpApplication(new AdpApplicationId(0x11111111, 0x11111111, 0x11111111, 0x11111111), false);
            }
            catch (AdpException ex)
            {
                if (ex is AdpErrorException)
                {
                    if (ex is InitializationException)
                    {
                        MessageBox.Show(ex.Message, "Initialization Error");
                        System.Environment.Exit(1);
                    }
                    else if (ex is UnauthorizedException)
                    {
                        MessageBox.Show(ex.Message, "Authorization Error");
                        System.Environment.Exit(1);
                    }
                    else if (ex is AdpRuntimeException)
                    {
                        MessageBox.Show(ex.Message, "Fatal Error");
                        System.Environment.Exit(1);
                    }
                }
                else if (ex is AdpWarningException)
                {
                    MessageBox.Show(ex.Message, "Warning");
                }
            }

        }

        private void btn_Welcome_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Hello IADP!!");
        }
    }
}

就這麼簡單的小程式,應該不會有問題吧!?~用力給他F5下去!!咦!!!?死去了!?跳出Exception了!?連不上Intel AppUp Center!?

image

為什麼呢?因為正常情況下,應用程式得要連上Intel AppUp Center進行認證的動作(這樣才有錢收啊~),但是我們還在開發階段啊,不用真的連上去,所以得有個模擬的伺服器讓我們連--沒錯,就是前面提到的Debugger!!~只要手動的把Debugger執行起來,就可以看到程式正常的運作囉!!

image

把Welcome給他用力的按下去~

image

看看Debugger,已經抓得到我們應用程式中的資訊囉!!

image

 

以上~IADP SDK的安裝介紹就到這邊為止啦~大功告成!!(什麼!?這篇完全沒發揮到WPF的威力!?那幹嘛用WPF當範例?...ㄟ~~眨眼睛~)