2010-03-22 59 views
2

有沒有什麼好的教程可以在運行時完全創建WPF控件?創建WPF運行時控件

感謝

+1

啊 - 爲什麼?不像「新」和「添加」一樣簡單嗎? – TomTom 2010-03-22 11:41:42

+0

WPF是一種新的範式。拋棄你古怪的舊winforms方法,並瞭解綁定,容器控件和數據模板。 – Will 2010-03-22 11:48:54

回答

5

沒有這樣的教程中,我知道的,部分原因是因爲這是很簡單的,如果你有已經爲控制您的XAML定義。

XAML代碼和相應的C#代碼之間的對應關係很簡單。

例子:

<Button Height="80" Width="150">Test</Button> 

進入

Button button = new Button() { Height = 80, Width = 150, Content = "Test" }; 
parentControl.Add(button); 

的事情你應該知道:

  1. 內容模型:在哪裏呢含量(在開始和結束標記之間的代碼) 走?它可以是屬性Content(如Button的情況)或一組子項(如Grid的情況)。
  2. 在XAML中,有時會隱式應用特殊的值轉換器;在C#代碼中,你必須自己做。例如:

    <Button Margin="1, 2"/> 
    

    變成

    Button button = new Button() { Margin = new Thickness(1, 2, 1, 2) }; 
    
  3. 每個UI元素只能有一個父元素。也就是說,你不能將同一個元素作爲孩子添加到兩個不同的父母身上。

  4. 綁定在一個非常特殊的方式定義:

    <Label MaxWidth={Binding ActualWidth, Source={Binding ElementName=Container}}> 
    

    進入

    Label label = new Label(); 
    label.SetBinding(
        Label.MaxWidthProperty, 
        new Binding("ActualWidth") { Source = Container } 
    ); 
    

    (也最好通過實際參考引用Container不是名稱)。

  5. 的附加屬性的語法又不是簡單:

    <Label Grid.Column="1"/> 
    

    變成

    Label label = new Label(); 
    Grid.SetColumn(label, 1); 
    

請注意,每個構建的/屬性你可以看一下在MSDN在XAML和C#中表達它的確切方式,通常直接在描述您正在尋找的概念的文章中。