Silverlight Listbox滚动仅在我设置高度时有效

时间:2012-03-03 06:16:34

标签: silverlight scrollviewer

我有一个列表框,我试图让滚动工作而不必设置高度,这可能吗?谢谢。下面是代码。滚动不起作用。

 <ListBox Name="EmployeeListBox" Background="Transparent"  
                             SelectionMode="Single"
                             ItemsSource="{Binding Employees, Mode=TwoWay}"  >
        <ListBox.ItemTemplate>
            <DataTemplate >
                <StackPanel>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="120" />
                            <ColumnDefinition Width="140" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock  Grid.Column="0" Grid.Row="0" FontWeight="Bold" Text="Name:" />
                        <TextBlock x:Name="TextBlock1"  Grid.Column="1" Grid.Row="0"  
                                       Text="{Binding Name}" />
                    </Grid>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

和viewmodel:

 public class EmployeeDataContext
{
    public List<Employee> Employees { get; set; }
    public EmployeeDataContext()
    {
        GetEmployeeList();
    }
    private void GetEmployeeList()
    {
        Employees = new List<Employee>();
        for (int i = 0; i < 100; ++i)
        {
            Employees.Add(new Employee() { Name = "Gema Arterton" });
        }
    }
}
public class Employee
{
    public string Name { get; set; }
}

2 个答案:

答案 0 :(得分:3)

(抱歉我的英语不好)

它还取决于里面的列表框是什么控件。如果你的列表框在Grid中,它应该占用该网格的所有空间 - 如果它在stackpanel内,它将使用尽可能少的os空间,因此你必须使用固定的高度/宽度。试试这个:

<UserControl...>
    <Grid>
      <ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">         
      </ListBox>
    </Grid>
</UserControl/>

如果有足够的项目,列表框应使用所有屏幕尺寸并显示垂直滚动条。

答案 1 :(得分:0)

您可以在scrollviewer中设置高度

  <ScrollViewer VerticalScrollBarVisibility="Visible" Height="480">
   <Grid Margin="0,0,0,50">  
   </Grid>
 </ScrollViewer>