WPF高度数据绑定问题

时间:2009-11-02 17:05:19

标签: wpf data-binding xaml

我有一个ScrollViewer,我试图在高度上进行数据绑定。 ScrollViewer拥有一个很长的ListBox

所以这是我的问题。我的ScrollViewer将绑定到我的窗口高度(Name="MainForm")就好了。但那时太长了。

如果我尝试绑定到窗口中的网格(Name="MainGrid"),则ScrollViewer会扩展到列表框的全长(不滚动)。

显然我可以硬编码高度,但是它不会随窗口调整大小。我不想放松的功能。

任何想法?

这是绑定设置为MainGrid的xaml

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WI Assistant" Height="621.25" Width="943.75" Name="MainForm" FontSize="14">
<Grid Name="MainGrid">
    <DockPanel Margin="266.25,0,455,12" HorizontalAlignment="Left" Name="dockPanel1">
        <StackPanel>
           <ScrollViewer  Height="{Binding ElementName=MainGrid, Path=Height}">
                    <ListBox Name="cboProjects"  FontSize="14" >
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
                   <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem> <ListBoxItem>Test1</ListBoxItem>
               </ListBox>
           </ScrollViewer>
        </StackPanel>
    </DockPanel>
</Grid>

(这将在XamlPadx

中运行(F5)

1 个答案:

答案 0 :(得分:3)

将其从StackPanel中取出,因为StackPanel在其方向上(在这种情况下是垂直方向)不受限制地增长。从最简单的解决方案开始:

<Window>
    <ScrollViewer>
        <ItemsControl>
            ...
        </ItemsControl>
    </ScrollViewer>
</Window>

然后根据需要添加复杂性。