2011-06-30 254 views
1

我有以下XAML驻留在一个WPF用户控件 -WPF布局帮助

<Grid>  
     <Grid.RowDefinitions> 
      <RowDefinition Height="30" /> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="30" /> 
     </Grid.RowDefinitions> 

     <TextBox 
      x:Name="MyTxt" 
      TextWrapping="WrapWithOverflow" 
      Grid.Row="0" 
      /> 

     <ListView     
      x:Name="MyList" 
      ItemsSource="{Binding}" 
      Grid.Row="1" 
      /> 

     <Label 
      Grid.Row="2" 
      /> 
    </Grid> 

该控制是嵌套在视图中的网格内。我希望文本框的高度位于网格顶部,底部的标签显示为网格底部的固定高度。我想要列表视图来填充屏幕区域的其余部分。

我遇到的问题是listview的大小不正确。如果我显示的记录太多,它会超出窗口,并且没有滚动条可用于向下滚动。因此,如果数据伸展到屏幕右侧,我无法看到垂直滚动条的底部。

我能够将listview设置为一个固定的高度,但工作,但我希望它是更动态和调整窗口如果可能的话。

有没有人有任何提示,可能会确定正确的大小?

感谢您的任何想法。

编辑 - 这是在主窗口视图中包含网格的xaml。这是从文章改编的约什 - 史密斯here

<Grid> 
     <Border 
      Style="{StaticResource MainBorderStyle}" 
      > 
      <HeaderedContentControl 
      Content="{Binding Path=Workspaces}" 
      ContentTemplate="{StaticResource WorkspacesTemplate}"     
      /> 
     </Border> 
</Grid> 

我有在下面的一些答案提到设置的ScrollViewer属性。 下面是DataTemplate中工作区

<DataTemplate x:Key="WorkspacesTemplate"> 
     <TabControl 
     IsSynchronizedWithCurrentItem="True" 
     ItemsSource="{Binding}" 
     ItemTemplate="{StaticResource ClosableTabItemTemplate}" 
     Margin="4" 
     /> 
    </DataTemplate> 
+0

你还可以发布包含你的UserControl的网格吗? –

回答

0

我能够得到它的工作。如果我在主窗口中更改包含网格以使用ContentControl而不是HeaderedcontentControl,它将按预期工作。

感谢您的帮助。

0

你能只是这些属性添加到列表视图?

ScrollViewer.CanContentScroll = "True" 
ScrollViewer.VerticalScrollBarVisibility="Visible" <!-- or "Auto" --> 

其他一切看起来都对我好。你有三排,其中两个是绝对的,另一个是伸展的。你也有第二行的列表视图,所以它应该与它一起展开。

,如果还是不行,请尝试在ScrollViewer中

<ScrollViewer> 
    <ListView/> 
</ScrollViewer> 
0

什么是默认的列表框的VerticalAlignment包裹的ListView?您可能需要将垂直对齐设置为拉伸。

<ListView     
     x:Name="MyList" 
     ItemsSource="{Binding}" 
     Grid.Row="1" 
     VerticalAlignment="Stretch" 
     />