Я только что установил 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 полностью. Есть ли что-то очевидное, чего мне не хватает?