Jeff,
Thank you!
Now that you pointed that out, it's easy and works fine.
I guess i was thinking that the code scope would have an implied reference to things in self... I see I'll just have to be more explicit

Thanks again, back to learning now...

Dave


On 4/27/2012 10:36 AM, Jeff Hardy wrote:
Hi David,
There's a working smaple at
https://github.com/jdhardy/IronPythonSamples/blob/master/PyWpfSample/PyWpfSample.py
that you can check out.

 From looking at your code, I think the issue is that you need to use
'self.label1.Content = ...' to reference the controls on the form.

- Jeff

On Fri, Apr 27, 2012 at 10:28 AM, David Bagby<d...@calypsoventures.com>  wrote:
Hi,
I’m a bit new to both IronPython and WPF - so of course I find myself trying
to figure out how to make them work together…
(I don’t know where best to ask this question as I don’t know if this is
really a IPY or a WPF or combination question - so if there is a better
group to consult, please tell me a good place to go ask.)

FYI, Software context:
     VS 2010
     IPY 2.7.2.1
     PTVS 1.1.1

For a learning test case, I had VS create the XAML for a window with one
button and one label. The simple goal is to click the button and have the
value in the label increment.

That was easy from a VB WPF app; but I can’t get the same simple action from
a IPY WPF app.

Here is the IPY XAML:
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
        Title="IPY-WPF-2" Height="300" Width="300">
        <Grid>
         <Button Content="Button" Height="57" HorizontalAlignment="Left"
Margin="48,26,0,0" VerticalAlignment="Top" Width="116" Click="Button_Click"
DataContext="{Binding}" Name="Button1" />
         <Label Content="Label" Height="38" HorizontalAlignment="Left"
Margin="62,147,0,0" VerticalAlignment="Top" Width="101" Name="label1"
DataContext="{Binding ElementName=Label1, Path=Content.Length}" />
     </Grid>
</Window>

Both the IPY and VB WPF app Xaml files were created by  the VS form editor –
so I’m guessing that the XAML is probably not the issue (but it’s just a
guess).

Here is the IPY code:

import wpf
from System.Windows import Application, Window
from System.Windows.Controls import Button, Label

class MyWindow(Window):
     def __init__(self):
         wpf.LoadComponent(self, 'IPY_WPF_2.xaml')
         #label1.Content = 1

     def Button_Click(self, sender, e):
         #label1.Content += 1
         pass

if __name__ == '__main__':
        Application().Run(MyWindow())


Any attempt I make to execute either of the commented out lines that
reference label1 cause a fault.

What is the proper way to reference a XAML object from IPY code in a WPF
app?

Obviously, I’m having trouble referencing a control defined in XAML from the
IPY code.
I suspect I’m missing something that should be obvious to me but isn’t, and
I’d appreciate a pointer as to what I need to do/learn.

FYI – here the equiv VB WFP app that worked first time:
Here is the VB XAML:

<Window x:Class="MainWindow"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation";
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";
     Title="MainWindow" Height="350" Width="525">
     <Grid>
         <Button Content="Button" Height="74" HorizontalAlignment="Left"
Margin="83,31,0,0" Name="Button1" VerticalAlignment="Top" Width="162"
DataContext="{Binding ElementName=Button1}" />
         <Label Content="Label" Height="45" HorizontalAlignment="Left"
Margin="87,161,0,0" Name="Label1" VerticalAlignment="Top" Width="152" />
     </Grid>
</Window>

Here is the VB code:

Class MainWindow
     Public Sub New()
         ' This call is required by the designer.
         InitializeComponent()

         ' Add any initialization after the InitializeComponent() call.
         Label1.Content = 1
     End Sub

     Private Sub Button1_Click(sender As System.Object, e As
System.Windows.RoutedEventArgs) Handles Button1.Click
         Label1.Content += 1
     End Sub
End Class

The VB WPF app works as expected.

Dave

_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users

_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to