Почему IronPython 2.7 вызывает исключение при создании привязок WPF из XAML? - PullRequest
0 голосов
/ 11 октября 2010

Я только что установил IronPython 2.7 с поддержкой VS и пытаюсь создать простое прототипное приложение 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> 

Когда я запускаю это, я получаю это исключение:

System.Xaml.XamlObjectWriterException was unhandled by user code
  Message=Provide value on 'System.Windows.Data.Binding' threw an exception.

InnerException: System.Windows.Markup.XamlParseException
     Message=A 'Binding' cannot be set on the 'Text' property of type 'TextBox'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

Хм, в прошлый раз, когда я смотрел, 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)

Я довольно сбит с толку в этот момент. Мне трудно представить что-либо, что могло бы вызвать эту проблему, что также не испортило бы создание объектов WPF из XAML полностью. Есть ли что-то очевидное, чего мне не хватает?

1 Ответ

0 голосов
/ 12 октября 2010

Это ошибка в новой поддержке WPF. Это исправлено в текущих источниках и поэтому будет исправлено в бета-версии 1. Основная причина заключается в том, что существуют «контексты схемы», которые необходимо использовать для получения полной семантики WPF, которую мы не использовали ранее. Он также перемещается в новый модуль "wpf" вместо того, чтобы находиться в модуле clr.

...