Silverlight / WP7: я хочу разместить кнопку после элемента Listbox, привязанного к данным - PullRequest
1 голос
/ 13 сентября 2010

Я довольно новичок в Silverlight. Я занимаюсь разработкой на платформе Windows Phone. Я хочу разместить кнопку в конце списка, который будет привязан к данным из веб-сервиса (я использую шаблон списка)

  • Элемент списка 1
  • Элемент списка 2
  • Элемент списка 3
  • Элемент списка 4
  • Элемент списка 5
  • Элемент списка 6
  • Элемент списка 7
  • Элемент списка 8
  • .. кнопка ..

Я пытался использовать кнопку grid / stackpanel и т. Д. Для размещения кнопки, и все мои решения размещали кнопку внизу экрана вместо нижней части всех записей списка, которые могут охватывать несколько экранов.

Файл XAML у меня есть ниже. Я хочу добавить кнопку под "LBoxItems"

<Grid x:Name="LayoutRoot"
      Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid  x:Name="ads" >
        <!--TitlePanel contains the name of the application and page title-->
    <StackPanel Margin="24,24,0,12"
                x:Name="SearchTitle">
        <StackPanel Orientation="Horizontal">
            <TextBlock FontWeight="Bold"
                       FontSize="{StaticResource PhoneFontSizeLarge}"
                       Text="{Binding Location}" />
            <TextBlock FontSize="{StaticResource PhoneFontSizeLarge}"
                       Text=" > " />
            <TextBlock FontWeight="Bold"
                       FontSize="{StaticResource PhoneFontSizeLarge}"
                       Text="{Binding Category}" />
        </StackPanel>
        <TextBlock FontSize="{StaticResource PhoneFontSizeMedium}"
                   Text="{Binding Converter={StaticResource SearchHistoryItemSubTitleConverter}}" />
        </StackPanel>   

    </Grid>
    <!--ContentPanel - place additional content here-->

    <Grid x:Name="ContentGrid"
          Grid.Row="2">            
            <ListBox x:Name="LBoxItems"
                 HorizontalAlignment="Left"
                 Margin="24, 0"
                 SelectionChanged="LBoxItems_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>

                        <StackPanel Margin="{StaticResource PhoneTouchTargetOverhang}" >
                            <TextBlock FontSize="{StaticResource PhoneFontSizeMediumLarge}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Foreground="{StaticResource PhoneAccentBrush}"                                        
                                   Text="{Binding Title.Text}" TextWrapping="Wrap" Margin="-4,20,0,0">
                            </TextBlock>
                            <TextBlock Text="{Binding PublishDate, Converter={StaticResource ItemPublishDateConverter}}" />

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

    <l:SpinnerControl x:Name="SpinnerControl"
                      Width="55"
                      Height="55"
                      Grid.RowSpan="2" />

    <TextBlock x:Name="TxtNoResultsMessage"
               FontSize="{StaticResource PhoneFontSizeLarge}"
               Text="No results found"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               Grid.RowSpan="2"
               Visibility="Collapsed" />
</Grid>

Ответы [ 3 ]

1 голос
/ 14 сентября 2010

Что вы хотите сделать, так это смешивать и сопоставлять различные элементы в шаблоне данных. Если вы не очень довольны тем, как работают другие решения, я мог бы рассмотреть вопрос о добавлении кнопки в табличку данных, но установить ее видимость свернутой. Затем для самой последней записи установите ее видимость видимой.

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

1 голос
/ 13 сентября 2010

Вы можете использовать ScrollViewer :

<ScrollViewer>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="800"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>

            <ListBox Grid.Row="0">

            </ListBox>

            <Button Grid.Row="1" Height="30" Content="Test"></Button>
        </Grid>
</ScrollViewer>

Просто разделите Grid внутри на две строки, вторая для кнопки .

Для вашего конкретного случая это будет:

<Grid x:Name="ContentGrid"
          Grid.Row="2">    
        <ScrollViewer>
          <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="600"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
            </Grid.RowDefinitions>

            <ListBox x:Name="LBoxItems"
                 HorizontalAlignment="Left"
                 Margin="24, 0"
                 SelectionChanged="LBoxItems_SelectionChanged" Grid.Row="0">
                <ListBox.ItemTemplate>
                    <DataTemplate>

                        <StackPanel Margin="{StaticResource PhoneTouchTargetOverhang}" >
                            <TextBlock FontSize="{StaticResource PhoneFontSizeMediumLarge}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" Foreground="{StaticResource PhoneAccentBrush}"                                        
                                   Text="{Binding Title.Text}" TextWrapping="Wrap" Margin="-4,20,0,0">
                            </TextBlock>
                            <TextBlock Text="{Binding PublishDate, Converter={StaticResource ItemPublishDateConverter}}" />

                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox> 
            <Button Content="Sample" Height="30" Grid.Row="1" />
          </Grid>     
        </ScrollViewer>       
    </Grid>

Конечно, вы можете установить соответствующую высоту в зависимости от вашей ситуации.

0 голосов
/ 06 декабря 2010

У меня была та же проблема, и я пытался использовать подход ScrollViewer, однако я не мог избавиться от проблемы «зависания прокрутки», пока не отключил вертикальную полосу прокрутки в списке. Может быть, это поможет и другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...