3

我需要顯示ListBox動態內容(所以我不知道它的高度)和Button下面。所以用戶應該能夠滾動列表框來結束並看到按鈕。ListBox後的按鈕

在Android中,我會使用RelativeLayoutbelow屬性的按鈕或一些其他的解決方案,但在WP我不知道該怎麼做。

我已經tryed:

1)把所有StackPanel

<StackPanel> 
    <ListBox /> 
    <Button /> 
</StackPanel> 

這不是工作,因爲StackPanel的阻止列表框滾動。

2)在電網

好了,讓我們把列表框
<StackPanel> 
    <Grid> 
     <ListBox /> 
    </Grid> 
    <Button /> 
</StackPanel> 

什麼也沒有發生。

3)把所有在網格中,並使用Grid.Row不工作。

4)讓我們把所有的GridButton設置保證金動態

<Grid> 
    <ListBox /> 
    <Button /> 
</Grid> 

好吧,這是工作,但它不是好的解決方法,因爲我需要處理ListBox每次填充和復位裕按鈕。壞壞壞。

P.S.另外,我可以把按鈕,列表框項目(不壞,但也不好:)

請幫我...

回答

7

如果我理解正確的話,你需要這樣定義一個簡單的網格:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <ListBox /> 
    <Button Grid.Row="1" Height="80"/> 
</Grid> 

通過將行的高度設置爲「星號」,並將第一行的高度設置爲自動,ListBox將填充剩餘空間,並且僅限按鈕80(您可以將其更改爲任何您喜歡的設置)。 ListBox自動放置到第零行,因爲如果未明確設置,則這是默認值。

如果你不想固定的頁面,但與列表框,滾動按鈕,您可以編輯列表框模板,像這樣:

<Style x:Key="ListBoxWithButtonStyle" TargetType="ListBox"> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
    <Setter Property="Padding" Value="0"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBox"> 
       <ScrollViewer x:Name="ScrollViewer" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" Padding="{TemplateBinding Padding}"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="Auto"/> 
         </Grid.RowDefinitions> 
         <ItemsPresenter/> 
         <Button Content="Touch me" Height="80" Grid.Row="1"/> 
        </Grid> 
       </ScrollViewer> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,然後應用到列表框控件:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <ListBox Style="{StaticResource ListBoxWithButtonStyle}"> 

    </ListBox> 
</Grid> 
+0

謝謝你的回答,我已經嘗試了你的解決方案,但'Button'總是可見的,我只需要顯示按鈕時,只有當用戶滾動ListBox'結束,就像如果按鈕將是最後列表框項目 –

+0

@ArtemZinnatullin我編輯這個案例的答案也是如此。 –

+0

Wow,簡單的任務代碼噸:)爲什麼Silverlight是如此醜陋......好吧,我會試試:) –