Scrollviewer在Usercontrol WPF中不可见

时间:2013-12-31 00:11:46

标签: c# wpf silverlight mvvm prism

WPF Scrollviewer在Usercontrol中不可见。

我正在使用PRISM架构。

我在usercontrol中有一个scrollviewer,而scrollviewer包含一个stackpanel。

<UserControl x:Class="SomeView"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"         
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"         
      mc:Ignorable="d" >

     <UserControl.Resources>        
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>        
     </UserControl.Resources>

     <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">  
     <StackPanel>     
<TextBlock Text="Initialize" HorizontalAlignment="Center" VerticalAlignment="Center"/>

 <StackPanel Orientation="Horizontal">     
 <Label Content="Left"/>     

 <ComboBox ItemsSource="{Binding LeftComboItems}"  SelectedItem="{Binding LeftSelectedItem}" /> 
 <Label Content="Right"/>     
<ComboBox ItemsSource="{Binding RightComboItems}" SelectedItem="{Binding RightSelectedItem}"/>     
 <Label/>    

<Button Content="Save" Command="{Binding SaveCommand}"/>     
 </StackPanel>     
 <StackPanel Visibility="{Binding IsVisible,Converter={StaticResource BooleanToVisibilityConverter}}">   

 <Grid>   

跳过列定义

<StackPanel Grid.Column="1" Grid.ColumnSpan="2">     
 <Label Content="Left"  />     
 <DataGrid ItemsSource="{Binding LeftDataGrid}" AutoGenerateColumns="False" ColumnWidth="*" Grid.Column="2" >     
 <DataGrid.Columns>     
 <DataGridTextColumn Header="ID" Binding="{Binding ID}" />     
 <DataGridTextColumn Header="Name" Binding="{Binding Name}" />     
 </DataGrid.Columns>     
 </DataGrid>     
 </StackPanel>  

 <StackPanel Grid.Column="4" Grid.ColumnSpan="2">   
 <Label Content="Left Grid" />     
 <DataGrid ItemsSource="{Binding RightDataGrid, Mode=OneWay}" AutoGenerateColumns="False" ColumnWidth="*" CanUserAddRows="False" CanUserDeleteRows="False" >


 <DataGridTextColumn Header="ID" Binding="{Binding id}" />     
 <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>     

 </DataGrid>
 </StackPanel>

    </StackPanel> 
 </Grid>    
     </StackPanel>        
     </ScrollViewer>

LeftComboItems,RightComboItems是字符串类型的Observable Collections。

3 个答案:

答案 0 :(得分:0)

删除StackPanel(使用网格/面板)或为StackPanel设置一些较大的高度。

答案 1 :(得分:0)

据我所知,ScrollViewer控件用于在溢出情况下启用滚动,例如在包含许多项的ListBox中。因此,如果我在哪里,我会将DataGrid放在ScrollViewer中并删除任何固定的行高,以使其溢出,否则使用ScrollViewer没有意义。

希望它有所帮助。

答案 2 :(得分:0)

您没有提及屏幕的高度和宽度。滚动查看器显示 在特定限制之后。因此,如果您希望滚动查看器显示至少提到垂直滚动条的最小高度。当您的滚动查看器中的数据/控件超出它将出现的高度限制时。

ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" MinHeight="300" MinWidth="200"