2009-11-02 85 views
0

我有一個ScrollViewer,我試圖做的數據綁定的高度。 ScrollViewer擁有很長的列表框WPF高度數據綁定問題

所以這是我的問題。我的ScrollViewer會綁定到我的窗口的高度(Name="MainForm")就好。但那時太長了。

如果我嘗試綁定到窗口中的網格(Name="MainGrid"),那麼ScrollViewer展開到列表框的全長(不滾動)。

顯然我可以硬編碼高度,但不會隨窗口調整大小。我不想放棄的功能。

任何想法?

這與綁定集的XAML來MainGrid

<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> 

(這將運行(F5)在XamlPadx

回答

3

把它拿出來StackPanel的,因爲StackPanel小號成長在它們的方向上不受限制(在這種情況下是垂直的)。從最簡單的解決方案開始:

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

然後根據需要添加複雜性。

+1

+1對單個元素使用'StackPanel'常常會導致這些問題。 – 2009-11-02 17:13:23

+0

祝福你!我正準備把這根頭髮拉出來。順便說一下,我使用堆棧面板來堆棧擴展器(多於1個控件)。發佈前我簡化了我的Xaml。現在我知道我不能在棧面板內的擴展器內使用ListBox。謝謝! – Vaccano 2009-11-02 17:18:07

+0

還是真的,在一個StackPanel裏面的ListBox(擴展器放在一邊) – Vaccano 2009-11-02 17:19:14