共用方式為


逐步解說: 建立 WPF 工具箱控制項

WPF 工具箱控制項範本中包含的Visual Studio 2010 SDK讓你能夠生產 Windows Presentation Foundation (WPF) 控制項,會自動加入至工具箱安裝擴充功能時。 這個逐步解說會示範如何使用範本來建立 [計數器] 控制項,您可以發佈給其他使用者。

必要條件

若要完成這個逐步解說中,您必須安裝Visual Studio 2010 SDK。

注意事項注意事項

如需有關 Visual Studio 的 SDK 的詳細資訊,請參閱擴充 Visual Studio 的概觀。若要了解如何下載 Visual Studio 的 SDK,請參閱Visual Studio 擴充性開發人員中心 MSDN 網站上。

Visual Studio 執行尋找試 WPF 工具箱控制項範本

工具箱的 WPF 控制項範本可用於新的專案 對話方塊後,在 安裝的範本,在這些位置中:

  • Visual Basic擴充性。 專案的語言是 Visual Basic。

  • 視覺 C#擴充性。 專案的語言是 C#。

建立 WPF 工具箱控制項專案

工具箱的 WPF 控制項範本會建立一個未定義的使用者控制項,並提供功能來新增控制項所需的所有工具箱

若要建立專案

  1. 在 [檔案] 功能表上,按一下 [新增],然後按一下 [專案]。

  2. 新的專案 對話方塊後,在 安裝的範本,按一下您偏好的程式設計語言的節點,然後選取 擴充性。 在 [專案類型清單中,選取 [ WPF 工具箱控制項

  3. 名稱方塊中,輸入您想要用於專案的名稱。 (此逐步解說中使用的名稱, 計數器。) 按一下 [確定]。

    這會建立包含使用者控制項,放置在控制項屬性的方案工具箱,和部署資訊清單的 VSIX。 名稱 方塊設定方案的名稱和命名空間的名稱,但它並不會設定控制項的名稱,在所顯示的樣子 工具箱。 您將設定,稍後在逐步解說。

建置使用者介面控制項

計數器控制項需要三個的子控制項: 兩個Label控制項來顯示的文字與目前的計數,以及Button控制項重設為 0 的計數。 因為裝載應用程式就遞增計數器以程式設計的方式,是必要的其他的子控制項。

若要建立使用者介面

  1. 方案總管] 中,連按兩下以開啟設計工具] 中的 ToolboxControl.cs。

    設計工具會顯示Grid控制項,其中包含Button控制項。

  2. 選取 [ Grid控制,然後按一下 [顯示在上方和左邊的旁邊,將它分為兩個資料列和兩個資料行方格的藍色長條。

  3. 工具箱,拖曳Label到每個方格的第一列中的儲存格的控制項。

    此時,您可以設定控制項的配置排列在格線上的項目。 相反地,您可以編輯可延伸應用程式標記語言 (XAML) 直接使控制項將會動態調整大小以配合文字。

  4. XAML 的高度設定] 窗格中, RowDefinition項目和寬度的ColumnDefinition項目 "auto"。

  5. 編輯按鈕和兩個標籤到類似下列範例的標記。

    <Button Content="Reset" Name="button1" Click="button1_Click" Grid.Row="1" Grid.ColumnSpan="2" />
    <Label Content="{Binding Text}" Grid.Row="0" Grid.Column="0" Name="label1" />
    <Label Content="{Binding Count}" Grid.Row="0" Grid.Column="1" Name="label2" />
    

    Grid.Row和Grid.Column屬性在方格上設定之項目的位置。 Grid.ColumnSpan在按鈕上的屬性可讓獨立的按鈕的寬度會調整大小的第一欄。

    Content屬性的標籤使用{Binding}語法來繫結至稍後在逐步解說中,您將定義的屬性。

程式碼撰寫使用者控制項

計數器 控制項都會公開 (expose) 的方法,以逐步遞增計數器,而引發的事件,此計數器會遞增,每當 重設 按鈕和三個屬性來儲存目前的計數、 顯示文字,以及是否要顯示或隱藏 重設 ] 按鈕。 ProvideTolboxControl屬性會決定在何處工具箱計數器 ,會出現控制項。

您可以撰寫此控制項,以相同的方式會撰寫 Windows Form 控制項,也就是藉由使用事件處理常式和公用方法,若要設定標籤的內容。 不過,在 WPF 中您可以設定控制項的資料內容,使您可以將 XAML 元素屬性繫結直接與程式碼中的屬性。 這種模式也會提供核心功能,從控制項的使用者介面 (UI) 分隔的抽象的層。

這個逐步解說會示範如何建立資料模型類別,,然後再將資料的內容控制項繫結至資料模型。

若要建立資料模型

  1. 按兩下按鈕以開啟 [程式碼] 視窗。

  2. 在檔案頂端,加入using指示詞的System.ComponentModel命名空間。

  3. 之後產生的類別,建立公用類別來定義資料內容。

    public class MyDataModel : INotifyPropertyChanged
    

    這個類別會實作INotifyPropertyChanged介面,可讓 XAML 項目,將繫結至自訂屬性。

  4. 以滑鼠右鍵按一下INotifyPropertyChanged介面宣告中,按一下 [ 實作介面,然後按一下 [ 實作介面一次。

    宣告 Visual Studio PropertyChanged事件。

  5. 在事件宣告之後,建立下列的私用方法來引發事件。

    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, 
                new PropertyChangedEventArgs(propertyName));
        }
    }
    
  6. 建立下列的私用欄位和公用屬性,以保留控制項中的兩個標籤的值。

    private string text = "Count:";
    public string Text
    {
        get { return this.text; }
        set
        {
            this.text = value;
            RaisePropertyChanged("Text");
        }
    }
    
    private int count = 0;
    public int Count
    {
        get { return this.count; }
        set
        {
            this.count = value;
            RaisePropertyChanged("Count");
        }
    }
    

    引發PropertyChanged事件會造成更新繫結的控制項內容的 XAML 繫結。 設定屬性為public這類病毒到設計工具,但不是為其他程式除非它們所繫結到此資料內容。

既然您已建立資料模型,您可以實作控制項的程式碼後置功能。

若要實作的控制項

  1. 實作控制項的部分類別定義,請以滑鼠右鍵按一下類別名稱,請按一下重構,按一下 [ 重新命名,然後將變更為類別名稱 計數器。 這是會顯示在 [名稱工具箱安裝擴充功能時。

  2. 正上方的類別定義中,在ProvideToolboxControl屬性宣告,將從第一個參數值變更 「 計數器 」 到 "一般"。 這會設定將會裝載該控制項中的項目群組的名稱工具箱

    下列範例所示ProvideToolboxControl屬性並調整過的類別定義。

    [ProvideToolboxControl("General", true)]
    public partial class Counter : UserControl
    
  3. 建立私用欄位來容納控制項的資料內容,並且建構函式,在指定的資料內容MyDataModel類別,如下列範例所示。

    private MyDataModel dm;
    public Counter()
    {
        this.DataContext = new MyDataModel();
        dm = (MyDataModel)DataContext;
        InitializeComponent();            
    }
    
  4. 建立下列的公用屬性,以反映Text和Count中的資料內容的屬性。

    public string Text
    {
        get { return dm.Text; }
        set { dm.Text = value; }
    }
    
    public int Count { get { return dm.Count; } }
    

    這些屬性中的資料內容的內容可讓任何應用程式,其中包含控制項。

  5. 建立下列的公用方法,以遞增的計數器和事件以通知主應用程式。

    public event EventHandler Incremented;
    public void Increment()
    {
        dm.Count ++;
        if (Incremented != null)
        {
            Incremented(this, EventArgs.Empty);
        }
    }
    
  6. 實作 click 處理常式的重設按鈕,如下所示。

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        dm.Count = 0;
    }
    
  7. 將下列的公用屬性,以顯示或隱藏重設 ] 按鈕。

    public Visibility ShowReset
    {
        get { return button1.Visibility; }
        set { button1.Visibility = value; }
    }
    

測試控制項

若要測試工具箱控制第一次在開發環境中進行測試,然後在裝載的應用程式中進行測試。

若要測試控制項

  1. 按 F5。

    這會在建置專案,並開啟已安裝該控制項的 Visual Studio 的第二個執行個體。

  2. 在 Visual Studio 的新執行個體,建立 WPF 應用程式專案。

  3. 方案總管] 中,連按兩下以開啟設計工具] 中的 MainWindow.xaml。

  4. 一般 一節的 工具箱,拖曳 計數器控制項加入表單,然後再選取。

    Text和ShowReset屬性應該會顯示在屬性 ] 視窗中的,連同其他屬性繼承自UserControl。 Count應該不會顯示屬性,因為它是唯讀的。

  5. 變更 Text 屬性值。

    在設計工具中顯示的標籤文字應該變更。

  6. 設定ShowReset屬性,以Hidden,再將它返回的設定Visible。

    重設在控制項上的按鈕應該會消失,且會再出現。

  7. 拖曳Button控制項加入表單,請將設定其Content屬性設定為測試,然後連按兩下按鈕以開啟其 click 處理常式程式碼] 檢視中。

  8. 實作 click 處理常式,呼叫Increment控制項的方法。

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        counter1.Increment();
    }
    
  9. 在建構函式函式呼叫之後, InitializeComponent,型別 counter1。實作 + =,然後按下 TAB 鍵兩次以產生的處理常式Counter.Incremented事件。

  10. 實作新的處理常式,如下列範例所示。

    public MainWindow()
    {
        InitializeComponent();
        counter1.Incremented += new EventHandler(counter1_Incremented);
    }
    
    void counter1_Incremented(object sender, EventArgs e)
    {
        button1.Opacity -= .2;
    }
    
  11. 按 F5。

    WPF 應用程式應該會開啟。

  12. 按一下 [測試]。

    此計數器應該增加,應該稍微淡出] 按鈕。

  13. 按一下 [ 測試四次。

    此計數器應該增加,按鈕應該繼續淡直到消失為止。 如果您繼續按一下 [位置] 按鈕,而,應繼續計數器遞增。

  14. 按一下 [重設]。

    此計數器應重設為 0

後續步驟

當您建置工具箱 控制項,Visual Studio 會建立一個名為檔案 ProjectName.vsix 專案的 [\bin\debug\] 資料夾中。 您可以將控制項部署上載到網路或網站的.vsix 檔案。 當使用者開啟.vsix 檔案時,控制項已安裝並加入至 Visual Studio 工具箱。 或者,如果您上載.vsix Visual Studio 庫 Web 站台,讓使用者可以藉由在瀏覽找到它 擴充管理員

請參閱

工作

逐步解說: 建立 Windows Form 工具箱控制項

概念

控制項撰寫概觀

其他資源

工具箱 (Visual Studio SDK)

使用者介面

Working with Controls in the WPF Designer