Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight列表框滚动仅在我设置高度时有效_Silverlight_Scrollviewer - Fatal编程技术网

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中,永远不会滚动,并添加了一个新的测试,列表框直接在网格中,滚动开始工作,让我发疯了。:-)谢谢