0

我在 VS Community 2017 中使用 IronPython。我遇到了一个我不明白的奇怪问题,我确信这很简单,但找不到其他人拥有它,这让我更加困惑。

我有这个非常简单的代码来尝试操作在 xaml 中定义的框中的文本值。

class MyWindow(Window):
  def __init__(self):
wpf.LoadComponent(self, 'WpfApplication1.xaml')    

win = MyWindow()
win.Test = win.FindName('test')
win.Test.Text = 'Hello, World'
Application().Run(win)

XAML

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  Title="WpfApplication1" Height="300" Width="420.408"> 
    <TextBox x:Name="Test" MinWidth="100" Margin="14,79,98,155"/>
</Window>

显然这还没有做任何有趣的事情,我只是想学习,但是这个非常基本的挂断对我来说没有任何意义。

*我想将 XAML 与上面的 python 分开,但这个网站上的编辑器太奇怪了。

4

1 回答 1

1

我解决了这个问题。程序出错了。还不习惯在 VS 社区中调试,不如我最习惯的 VBA 直观。我确信这可能是由于默认设置,试图弄清楚如何让它提供比它更多的反馈,因为我在错误列表中显示没有错误,这显然是不正确的。

所以错误是我试图将 win.FindName('test') 分配给 win.Test 。我在其他地方的网站上看到过类似的东西,并且在此之前也遇到过问题,所以我不确定要尝试什么,但现在我知道我可以通过几种不同的方式做到这一点

1) Test = win.FindName('Test') (不包括win.开头)
Test.Text = 'Hello, World'

或者,更简单

2) win.Test.Text = '你好,世界'

我觉得我之前尝试了第二个,但它现在正在工作,所以我确定其他东西坏了。

当前工作代码

import wpf

from System.Windows import Application, Window

class MyWindow(Window):
  def __init__(self):
    wpf.LoadComponent(self, 'WpfApplication1.xaml')           

win = MyWindow()
Test = win.FindName('Test')
Test.Text = 'Hello, World'
Application().Run(win)
于 2017-09-27T03:01:24.953 回答