2010-07-14 69 views
1

我設法在列表框的自動滾動查看器功能中設置一個奇怪的行爲,當它放置在2 * 2網格中時。ListBox的滾動條在某些配置中消失在WPF中

如果您嘗試使用下面的XAML,因爲它是你會看到垂直的ScrollViewer是有,但不可見的(它只是超出了第一列的寬度)

<Window x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="200" Width="200"> 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

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

    <ListBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" > 
     <ListBox.Items> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
      <TextBlock Text="Item"/> 
     </ListBox.Items> 
    </ListBox> 

    <Canvas Background="Yellow" Grid.Row="0" Grid.Column="1" MinHeight="20"/> 
    <Canvas Background="Red" Grid.Row="1" Grid.Column="1" MinHeight="20"/> 

</Grid> 

的據我所知,是第一個畫布(黃色)。 更具體WPF不喜歡的任何控件被放置在列= 0列= 1,並且破壞了的ScrollViewer功能。

這個問題是否可重現給任何其他人或只是我嗎?

+0

我不明白這個,但我注意到以下內容。它可以使用文本塊而不是畫布進行復制,因此對於畫布不是問題。當縮小網格時,列表框的寬度也會增加,這使我相信滾動條被添加到列表框中,問題在於網格不能調整大小。 – 2010-07-14 16:52:54

回答

1

是的,它是可重複的,實際上,它是在每一個網格,位置或大小可重複性。當您將實際的高度添加到列表框時,滾動條返回。

但是,真正的問題似乎來自與列表框重疊的黃色畫布。不管這是不是一個錯誤,我不知道。刪除黃色的畫布,你很好。將行從0更改爲1,你也很好。但是,當你給ListBox一個特定的高度,如上所述,滾動條也回來了:

<ListBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Height="100"> 
    <ListBox.Items> 
     <TextBlock Text="Item 1"/> 
     <TextBlock Text="Item 2"/> 
     <TextBlock Text="Item 3"/> 
     <TextBlock Text="Item 4"/> 
     <TextBlock Text="Item 5"/> 
     <TextBlock Text="Item 6"/> 
     <TextBlock Text="Item 7"/> 
     <TextBlock Text="Item 8"/> 
     <TextBlock Text="Item 9"/> 
     <TextBlock Text="Item 10"/> 
     <TextBlock Text="Item 11"/> 
     <TextBlock Text="Item 12"/> 
    </ListBox.Items> 
</ListBox>