WPF运行时控件创建

时间:2010-03-22 11:33:17

标签: .net wpf

是否有完全在运行时创建WPF控件的好教程?

由于

1 个答案:

答案 0 :(得分: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);
    
  6. 请注意,对于每个构造/属性,您可以在MSDN中查找在XAML和C#中表达它的确切方式,通常直接在描述您正在寻找的概念的文章中。