2012-05-19 3 views
0

У меня есть небольшая проблема с ListBox и его элементами. Как вы можете видеть в моем коде, для стековых панелей для обоих текстовых блоков установлено значение 250. Это устанавливается так, потому что в противном случае текст расширяется в 1 строке, и вы не можете видеть кнопку. Очевидно, проблема заключается в том, что установка этого параметра статична, если изменения разрешения или ориентации не будут полностью соответствовать экрану. Я хотел бы знать, есть ли способ установить эту ширину динамически.Windows Phone 7 - Размер ListBox и Stackpanel

<ListBox x:Name="attractionsListbox" Margin="0,0,-12,0" ItemsSource="{Binding Attractions}" Loaded="attractionsListbox_Loaded"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" Tag="{Binding Name}" Tap="AttractionListBoxItem_Tap"> 
       <Image Height="140" Width="140" Margin="0,5,0,0" Source="{Binding Thumbnail}" MaxWidth="140" MaxHeight="140" Stretch="Fill" /> 
       <StackPanel Width="250"> 
        <TextBlock x:Name="AttractionName" Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSmallStyle}" FontSize="20" Foreground="Black" FontWeight="Bold" /> 
        <TextBlock Text="{Binding ShortDescription}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSmallStyle }" Foreground="Black" /> 
       </StackPanel> 
       <Button Width="80" Height="80" Padding="10,3,10,5" BorderBrush="Black" Click="Add_Todo_Click" Tag="{Binding Name}"> 
        <Button.Background> 
         <ImageBrush ImageSource="/SundsvallWP7;component/Images/appbar.add.rest.png"/> 
        </Button.Background> 
       </Button> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

(В Android есть весы, где вы можете назначить вес каждого элемента управления, не знаю, существует ли это в Windows Phone).

спасибо.

+0

Почему вы не используете SelectionChanged в списке? –

+0

Насколько я знаю, если я его использую, когда я нажимаю на кнопку, это запустит это событие, и это не то, что я хочу, так как кнопка имеет свою специфическую функцию. – Jatago

+0

Кнопка будет поглощать событие - кажется, что у вас практически та же настройка, что и SelectionChanged, b/c у вас есть кнопка внутри контейнера с событием Tap. –

ответ

0

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

http://www.windowsphonegeek.com/articles/Using-DockPanel-in-WP7.

В качестве альтернативы, только две ориентации и разрешение не должны меняться. Вы можете просто привязать Width к Orientation с преобразователем значений.

+0

Это тоже была моя идея. Я видел эту ссылку раньше, но, хотя, возможно, был «стандартный» способ сделать это. Я попробую и расскажу, как все прошло. Благодаря! – Jatago

Смежные вопросы