在IronPython 2.7中,wpf.LoadComponent方法将连接名称与XAML UI元素相同的所有属性。如果使用IronPython
2.6,则需要使用WombatPM建议的代码。因此,对于IronPython 2.7,如果您使用以下XAML:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="IronPyWpf" Height="300" Width="300"> <Grid> <Button x:Name="button" Content="Button" Height="23" HorizontalAlignment="Left" Margin="103,226,0,0" VerticalAlignment="Top" Width="75" /> <TextBox x:Name="textbox" Height="182" HorizontalAlignment="Left" Margin="24,21,0,0" VerticalAlignment="Top" Width="237" /> </Grid></Window>
然后,您可以定义两个属性,分别称为button和textbox,以访问UI元素:
class MyWindow(Window): def __init__(self): wpf.LoadComponent(self, 'IronPyWpf.xaml') self._button.Content = 'My Button' self._textbox.Text = 'My Text' def get_button(self): return self._button def set_button(self, value): self._button = value button = property(get_button, set_button) def get_textbox(self): return self._textbox def set_textbox(self, value): self._textbox = value textbox = property(get_textbox, set_textbox)
实际上,您似乎可以通过删除属性定义来进一步简化代码:
class MyWindow(Window): def __init__(self): wpf.LoadComponent(self, 'IronPyWpf.xaml') self.button.Content = 'My Button' self.textbox.Text = 'My Text'
不幸的是,正如您已经看到的那样,当您尝试编辑XAML并给UI元素命名时,Visual Studio似乎崩溃了,并且具有空引用异常。



