Silverlight列表框滚动仅在我设置高度时有效
我有一个列表框,我试图使滚动工作,而不必设置高度,这是可能的吗?谢谢下面是代码。滚动不起作用Silverlight列表框滚动仅在我设置高度时有效,silverlight,scrollviewer,Silverlight,Scrollviewer,我有一个列表框,我试图使滚动工作,而不必设置高度,这是可能的吗?谢谢下面是代码。滚动不起作用 <ListBox Name="EmployeeListBox" Background="Transparent" SelectionMode="Single" ItemsSource="{Binding Employees, Mode=TwoWay}" >
<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>
和视图模型:
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; }
}
公共类EmployeeDataContext
{
公共列表雇员{get;set;}
公共雇员数据上下文()
{
GetEmployeeList();
}
私有void GetEmployeeList()
{
雇员=新名单();
对于(int i=0;i<100;++i)
{
Add(new Employee(){Name=“Gema Arterton”});
}
}
}
公营雇员
{
公共字符串名称{get;set;}
}
(很抱歉我的英语不好)
这也取决于列表框中的控件。如果您的列表框位于网格内,它应该占用该网格的所有空间-如果它位于stackpanel内,它将使用尽可能少的操作系统空间,因此您必须使用固定的高度/宽度。试试这个:
<UserControl...>
<Grid>
<ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</ListBox>
</Grid>
</UserControl/>
如果有足够的项目,列表框应该使用所有屏幕大小并显示垂直滚动条。(对不起,我的英语不好)
这也取决于列表框中的控件。如果您的列表框位于网格内,它应该占用该网格的所有空间-如果它位于stackpanel内,它将使用尽可能少的操作系统空间,因此您必须使用固定的高度/宽度。试试这个:
<UserControl...>
<Grid>
<ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</ListBox>
</Grid>
</UserControl/>
如果有足够的项目,列表框应使用所有屏幕大小并显示垂直滚动条。您可以在scrollviewer中设置高度
<ScrollViewer VerticalScrollBarVisibility="Visible" Height="480">
<Grid Margin="0,0,0,50">
</Grid>
</ScrollViewer>
您可以在scrollviewer中设置高度
<ScrollViewer VerticalScrollBarVisibility="Visible" Height="480">
<Grid Margin="0,0,0,50">
</Grid>
</ScrollViewer>
你说的“无需设置高度”是什么意思?我不明白这和列表框滚动有什么关系。你能澄清一下吗?例如,如果我将高度设置为300,当显示所有项目时,该高度小于实际高度,则滚动工作正常;如果我根本没有设置高度,则列表框只会在浏览器屏幕中显示所有项目,一直到底部并剪切其余项目,我将编辑我的问题,以包含列表框中未滚动的完整代码。即使有代码示例,仍然不理解。您可以使用将代码放入页面中来控制滚动条是否显示、隐藏、自动等,您将看到列表框仅显示浏览器窗口中的所有项目。无需滚动。我将添加一个viewmodel类,您可以将其挂接到其中。因此,它不会将项目包装到屏幕中,您说的“无需设置高度”是什么意思?我不明白这和列表框滚动有什么关系。你能澄清一下吗?例如,如果我将高度设置为300,当显示所有项目时,该高度小于实际高度,则滚动工作正常;如果我根本没有设置高度,则列表框只会在浏览器屏幕中显示所有项目,一直到底部并剪切其余项目,我将编辑我的问题,以包含列表框中未滚动的完整代码。即使有代码示例,仍然不理解。您可以使用将代码放入页面中来控制滚动条是否显示、隐藏、自动等,您将看到列表框仅显示浏览器窗口中的所有项目。无需滚动。我将添加一个viewmodel类,您可以将其连接到其中。因此,它没有将项目包装到屏幕中。谢谢Leo,我还注意到我的列表框位于stackpanel中,永远不会滚动,并添加了一个新的测试,列表框直接位于网格中,滚动开始工作,让我发疯。:-)感谢Hanks Leo,我还注意到我的列表框在stackpanel中,永远不会滚动,并添加了一个新的测试,列表框直接在网格中,滚动开始工作,让我发疯了。:-)谢谢