我使用的是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())
答案 0 :(得分:0)
您将在IronPython中动态生成WPF元素,就像在C#中一样。有关如何在C#中执行此操作,请参阅WPF: How to dynamically Add Controls in dynamically created WPF Window。