2010-03-22 54 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#中表达它的确切方式,通常直接在描述您正在寻找的概念的文章中。