Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我从XAML创建WPF绑定时,为什么IronPython 2.7会引发异常?_Wpf_Xaml_Binding_Ironpython - Fatal编程技术网

当我从XAML创建WPF绑定时,为什么IronPython 2.7会引发异常?

当我从XAML创建WPF绑定时,为什么IronPython 2.7会引发异常?,wpf,xaml,binding,ironpython,Wpf,Xaml,Binding,Ironpython,我刚刚安装了支持VS的IronPython2.7,并尝试创建一个简单的WPF原型应用程序。有些东西坏了,可能是在我的安装中,我不知道如何诊断它。我无法使用最简单的绑定;他们失败了,但有一个例外,似乎真的,真的错了 我创建了一个WPF应用程序项目,并像这样将XAML放在我的WpfApplication1.XAML文件中: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

我刚刚安装了支持VS的IronPython2.7,并尝试创建一个简单的WPF原型应用程序。有些东西坏了,可能是在我的安装中,我不知道如何诊断它。我无法使用最简单的绑定;他们失败了,但有一个例外,似乎真的,真的错了

我创建了一个WPF应用程序项目,并像这样将XAML放在我的
WpfApplication1.XAML
文件中:

<Window 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       Title="WpfApplication1"> 
       <Grid>
          <TextBox x:Name="MyTextBox" Text="{Binding RelativeSource={RelativeSource Self}, Mode=OneWay, Path=ActualWidth}"/>
    </Grid>
</Window> 
嗯,上次我看,
Text
是一个依赖属性。事实上,如果我在代码中创建绑定,它会起作用:

import clr
clr.AddReference('PresentationFramework')

from System.Windows import Application, Window, Controls, Data, PropertyPath

class MyWindow(Window):
    def __init__(self):
        clr.LoadComponent('WpfApplication1.xaml', self)
        t = self.FindName("MyTextBox")
        b = Data.Binding()
        b.RelativeSource = Data.RelativeSource.Self
        b.Mode = Data.BindingMode.OneWay
        b.Path=PropertyPath("ActualWidth")
        t.SetBinding(Controls.TextBox.TextProperty, b)

在这一点上我很困惑。对于我来说,很难想象有什么会导致这个问题,而不完全从XAML创建WPF对象。是否有明显的遗漏?

这是新WPF支持中的一个bug。它在电流源中是固定的,因此它将在Beta 1版本中固定。根本原因是需要使用“模式上下文”来获取我们以前没有使用过的完整WPF语义。它还移动到一个新的“wpf”模块,而不是clr模块。

哇,真的吗?我在追踪器里没看到有人提到它。有点令人不安的是,他们推出了任何版本的IronPython,其中有一个使WPF绑定无法工作的bug。@Robert-IronPython 2.7目前是alpha 1版本,所以我认为有bug是可以接受的:-)这不是“bug”。这是IronPython不支持基本用例。实际上,现在基本上不能用它构建WPF应用程序。我很惊讶这不会阻止发布,更奇怪的是它没有文档记录。当我发布的alpha软件有这么大的问题时,我告诉人们它已经坏了。实际上,我们在发布时并不知道这个问题,这就是为什么在任何发布说明中都没有提到它的原因。直到后来我们在内部发现它,它才被修复。2.7是一个alpha版本,因此它是用来获取早期反馈的,而不是用来表示稳定且经过良好测试的内容。
import clr
clr.AddReference('PresentationFramework')

from System.Windows import Application, Window, Controls, Data, PropertyPath

class MyWindow(Window):
    def __init__(self):
        clr.LoadComponent('WpfApplication1.xaml', self)
        t = self.FindName("MyTextBox")
        b = Data.Binding()
        b.RelativeSource = Data.RelativeSource.Self
        b.Mode = Data.BindingMode.OneWay
        b.Path=PropertyPath("ActualWidth")
        t.SetBinding(Controls.TextBox.TextProperty, b)