Я использую Ironpython 2.7. Можно ли динамически генерировать элементы окна wpf на основе данных, найденных во время выполнения? Программа будет вызывать базу данных и загружать параметры, и я бы хотел создать TextBox (и ComboBox) для каждого загруженного параметра (например, если загружено 4 параметра, в окне будут показаны 4 текстовых блока с соответствующими ComboBoxes).Как динамически генерировать элементы WPF в Ironpython
Это что-то, что я могу сделать с декоратором свойств? Должен ли я генерировать 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())
Метод, который я предложил, также работал. Сделайте все ссылки на примере C#, который вы упомянули, перевести непосредственно на IronPython? – solvador
Да, я так считаю. Просто напишите, как обычно, на C#, за исключением использования синтаксиса Python. –
Запись в XAML имеет свои преимущества, но если вы должны написать код Python, то избавляйтесь от необходимости писать XAML. –