Ширина элементов управления внутри списка не меняется после изменения ориентации

У меня есть сетка внутри панели стека, которая находится внутри списка. Эта сетка имеет несколько элементов управления, таких как прямоугольники и текстовые блоки. Они растягиваются на всю ширину в портретной ориентации, но не в альбомной.

Снимок эмулятора

Это XAML:

<ListBox Name="PassList" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">

                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel HorizontalAlignment="Stretch">
                                    <Grid Name="StackPanelWidth" Width="{Binding ElementName=PassList, Path=ActualWidth}">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="40"/>
                                            <RowDefinition Height="40"/>
                                            <RowDefinition Height="40"/>
                                            <RowDefinition Height="40"/>
                                            <RowDefinition Height="20"/>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="10"/>
                                            <ColumnDefinition Width="{Binding ElementName=StackPanelWidth, Path=ActualWidth}"/>
                                            <ColumnDefinition Width="10"/>
                                        </Grid.ColumnDefinitions>

                                        <Rectangle Fill="White"
                                                   Grid.Row="0"
                                                   Grid.Column="1"
                                                   HorizontalAlignment="Stretch"
                                                   VerticalAlignment="Stretch"
                                                   RadiusX="10"
                                                   RadiusY="10"
                                                   />

                                        <Rectangle Fill="White"
                                                   Grid.Row="0"
                                                   Grid.Column="1"
                                                   HorizontalAlignment="Stretch"
                                                   VerticalAlignment="Stretch"
                                                   Margin="0,10,0,0"
                                                   />

                                        <Rectangle Fill="DarkGray"
                                                   Grid.Row="0"
                                                   Grid.Column="1"
                                                   Height="1"
                                                   VerticalAlignment="Bottom"
                                                   />

                                        <TextBlock Name="Country"
                                                   Grid.Row="0"
                                                   Grid.Column="1"
                                                   HorizontalAlignment="Left"
                                                   Margin="10,0,0,0"
                                                   VerticalAlignment="Center"
                                                   Text="{Binding Country}"
                                                   Foreground="Black"
                                                   FontWeight="Bold"
                                                   />


                                        .............
                                        .............

                                    </Grid>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

Что-то не так с моим кодом? Любая помощь будет оценена по достоинству.

Спасибо.


person Aditya    schedule 10.07.2012    source источник


Ответы (1)


почему ты это делаешь?

‹Grid.ColumnDefinitions>‹ ColumnDefinition Width = "10" /> ‹ColumnDefinition Width =" {Binding ElementName = StackPanelWidth, Path = ActualWidth} "/>‹ ColumnDefinition Width = "10" /> ‹/Grid.ColumnDefinitions>

Здесь вы как-то указываете ширину, из-за которой ее размер не изменяется.

Также панель стека автоматически подстраивается под свою дочернюю ширину, поэтому нет необходимости указывать привязку, если это то, что вы пытались сделать.

person Milan Aggarwal    schedule 03.08.2012