如何在Ironpython中动态生成WPF元素

时间:2016-03-09 17:27:35

标签: wpf xaml ironpython

我使用的是Ironpython 2.7。是否可以根据运行时找到的数据动态生成wpf窗口的元素?程序将调用数据库并加载参数,并且我想为加载的每个参数生成TextBox(和ComboBox)(例如,如果加载了4个参数,窗口将显示4个带有相应ComboBox的TextBox)。

这是我可以用属性装饰器做的吗?我是否必须动态生成xaml才能执行此操作?例如:

    import wpf
    from System import Windows.Window

    parameters = loadfromdatabase(args)....
    xaml_filename = "program.xaml"
    textBox_list = ""
    cnt = 0
    for param in parameters:
        textBox_list += '<TextBox x:Name={} HorizontalAlignment="Left" Height="21" Width = "52" Margin="60,{},0,0" VerticalAlignment="Top"/>\n'.format(param,60+26*cnt)
        cnt += 1
    xaml_string = "<Window \n<Grid>\n" + textBox_list + "</Grid>\n</Window>"

    with open(xaml_filename, "w") as f:
        f.write(xaml_string)

    class MyWindow(Window):
        def __init__(self):
            wpf.LoadComponent(self, xaml_filename)

    if __name__ == '__main__':
        Application().Run(MyWindow())

1 个答案:

答案 0 :(得分:0)

您将在IronPython中动态生成WPF元素,就像在C#中一样。有关如何在C#中执行此操作,请参阅WPF: How to dynamically Add Controls in dynamically created WPF Window