как изменить ширину стека панели при повороте - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь отобразить список твитов в стеке, и я хочу, чтобы сообщение было перенесено на доступную ширину экрана (как в альбомной, так и в портретной ориентации)

Я поместил следующую панель стека в элемент списка шаблонов шаблонов данных

<code><StackPanel>
<Image Source="{Binding ImageSource}" Height="73" Width="73" VerticalAlignment="Top" />
<StackPanel Width="380">
<TextBlock Text="{Binding UserName}" Foreground="#FFC8AB14" FontSize="28"/>
<TextBlock Text="{Binding Message}" TextWrapping="Wrap" FontSize="20" />
<TextBlock Text="{Binding CreatedAt}" FontSize="12" Foreground="#FFC8AB14" />
</StackPanel>
</StackPanel>

когда я поворачиваю устройство в альбомную ориентацию, панель стека, содержащая твиты, остается на ширине = 380; если я уберу ширину, текстовый блок сообщения больше не будет переноситься ..

мне нужно сохранить ширину на панели стека и намеренно изменить ее при повороте устройства, или есть какой-то способ, которым она может соответствовать ширине экрана, а также переноситься на текст сообщения?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Попробуйте использовать Grid, а не StackPanel, для внешнего контейнера в вашем шаблоне. Таким образом, вы можете определить столбец для расширения, чтобы занять все доступное пространство.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Image Grid.Column="0" Source="{Binding ImageSource}" Height="73" Width="73" VerticalAlignment="Top" />
    <StackPanel Grid.Column="1">
        <TextBlock Text="{Binding UserName}" Foreground="#FFC8AB14" FontSize="28"/>
        <TextBlock Text="{Binding Message}" FontSize="20" />
        <TextBlock Text="{Binding CreatedAt}" FontSize="12" Foreground="#FFC8AB14" />
    </StackPanel>
</Grid>
0 голосов
/ 10 ноября 2010

вам нужно будет присоединиться к OrientationChanged событию

    public MainPage()
    {
        InitializeComponent();
        this.OrientationChanged += new EventHandler<OrientationChangedEventArgs>(MainPage_OrientationChanged);
    }

    void MainPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
    {
        myStackpanel.Width = 100;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...