2010-10-11 4 views
0

Je viens d'installer IronPython 2.7 avec support VS, et j'essaie de créer une application WPF prototype simple. Quelque chose est cassé, probablement dans mon installation, et je n'arrive pas à comprendre comment le diagnostiquer. Je ne peux pas obtenir le plus simple des liaisons pour travailler; ils échouent avec une exception qui semble vraiment, vraiment fausse.Pourquoi IronPython 2.7 lève une exception lorsque je crée des liaisons WPF à partir de XAML?

créer un projet d'application WPF, et mettre XAML comme ça dans mon dossier 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> 

Quand je cours, je reçois cette exception:

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. 

Hmm, dernière fois que je regardé, Text est une propriété de dépendance. Et en effet, si je crée la liaison dans le code, cela fonctionne:

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) 

Je suis assez déconcerté à ce stade. Il est difficile pour moi d'imaginer tout ce qui pourrait causer ce problème qui ne gâcherait pas la création complète d'objets WPF à partir de XAML. Y at-il quelque chose d'évident que j'ai manqué?

Répondre

0

Ceci est un bug dans le nouveau support WPF. Il est corrigé dans les sources actuelles et sera donc corrigé dans la version bêta 1. La cause sous-jacente est qu'il existe des «contextes de schémas» qui doivent être utilisés pour obtenir la sémantique complète de WPF que nous n'utilisions pas auparavant. Il se déplace également vers un nouveau module "wpf" au lieu d'être dans le module clr.

+0

Wow, vraiment? Je n'ai vu aucune mention de cela dans le tracker. Il est un peu déconcertant de voir qu'ils feraient disparaître toute version d'IronPython avec un bug qui empêcherait WPF de fonctionner. –

+0

@Robert - IronPython 2.7 est actuellement en version alpha 1 donc je pense qu'il est acceptable d'avoir des bugs là :-) –

+0

Ce n'est pas "bugs". IronPython ne prend pas en charge un cas d'utilisation fondamental. Vraiment, vous ne pouvez pas créer d'applications WPF pour le moment. Je suis surpris que cela ne retarde pas une sortie, et je suis plus surpris qu'il ne soit pas documenté. Quand je lance un logiciel alpha qui a quelque chose de si gros, je dis aux gens que c'est cassé. –

Questions connexes