我不知道如何把元素放在列表框下面。列表框應該佔據整個屏幕。把項目放在列表框
<StackPanel>
<ListBox>
<ListBoxItem>//Elements from ViewModel</ListBoxItem>
</ListBox>
<TextBlock>Additional elment</TextBlock>
</StackPanel>
但滾動不工作。我無法分配高,因爲它是未知
我不知道如何把元素放在列表框下面。列表框應該佔據整個屏幕。把項目放在列表框
<StackPanel>
<ListBox>
<ListBoxItem>//Elements from ViewModel</ListBoxItem>
</ListBox>
<TextBlock>Additional elment</TextBlock>
</StackPanel>
但滾動不工作。我無法分配高,因爲它是未知
例如,你可以使用一個DockPanel中:
<DockPanel>
<TextBlock DockPanel.Dock="Bottom">Additional element</TextBlock>
<ListBox>
<ListBoxItem>//Elements from ViewModel</ListBoxItem>
</ListBox>
</DockPanel>
的最後一個元素的DockPanel中,即ListBox在這種情況下將填充剩餘空間,除非您將DockPanel的LastChildFill屬性設置爲false:https://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.lastchildfill(v=vs.110).aspx
StackPanels對於scrollba不能很好地工作RS。有關這方面的更多信息,請參閱我對以下問題的回答。
Horizontal scroll for stackpanel doesn't work
您的解決方案將讓更多的元素將在窗口的底部,不低於在列表框中的最後一個項目。我的問題是不同的。
使用網格則:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ListBox Grid.Row="0" />
<TextBlock Grid.Row="1">Additional element</TextBlock>
<!-- Grid.Row="2" = the rest of the window content... -->
</Grid>
我希望更多的元素,其餘滾動 - 這是一個按鈕
使用CompositeCollection作爲的ItemsSource爲ListBox那麼,而不是直接綁定到您的源屬性:
<ListBox>
<ListBox.Resources>
<CollectionViewSource x:Key="itemsSource" Source="{Binding YourViewModelSourceCollection}" />
</ListBox.Resources>
<ListBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource itemsSource}}" />
<TextBlock>Additional element</TextBlock>
</CompositeCollection>
</ListBox.ItemsSource>
</ListBox>
您的解決方案將使額外的元素將在窗口的底部,而不是在列表框的最後一項之下。我的問題是不同的。 – WymyslonyNick
你的意思是說你想把附加元素*置於ListBox中?然後你應該添加另一個對象到ListBox本身。如果你想把這個元素放在ListBox下面,你也可以使用Grid。我編輯了我的答案。 – mm8
我不想在列表中添加額外的元素 - 但我想要一個額外的元素以這種方式表現。 您的網格解決方案將使任何滾動不可見。 – WymyslonyNick