ynkdir/py-win32more

winui: Grid.SetRow() doesn't work

Closed this issue · 0 comments

from win32more.Microsoft.UI.Xaml import Window
from win32more.Microsoft.UI.Xaml.Controls import Button, ColumnDefinition, Grid, RowDefinition
from win32more.Windows.Foundation import PropertyValue
from win32more.xaml import XamlApplication


class App(XamlApplication):
    def OnLaunched(self, args):
        win = Window()

        grid = Grid()

        grid.RowDefinitions.Append(RowDefinition())
        grid.RowDefinitions.Append(RowDefinition())
        grid.RowDefinitions.Append(RowDefinition())
        grid.ColumnDefinitions.Append(ColumnDefinition())
        grid.ColumnDefinitions.Append(ColumnDefinition())
        grid.ColumnDefinitions.Append(ColumnDefinition())

        for row in range(3):
            for col in range(3):
                button = Button()
                button.Content = PropertyValue.CreateString(f"{row},{col}")

                if 1:
                    # Grid.SetRow() and SetColumn() doesn't work.  It works in Visual Studio template project.
                    # OSError: exception: access violation reading 0x0000000000000010
                    Grid.SetRow(button, row)
                    Grid.SetColumn(button, col)
                else:
                    # SetValue() works.
                    button.SetValue(Grid.RowProperty, PropertyValue.CreateInt32(row))
                    button.SetValue(Grid.ColumnProperty, PropertyValue.CreateInt32(col))

                grid.Children.Append(button)

        win.Content = grid
        win.Activate()


XamlApplication.Start(App)