Прокрутка списка Silverlight работает, только если я установил высоту - PullRequest
0 голосов
/ 03 марта 2012

У меня есть список, и я пытаюсь сделать прокрутку без установки высоты, это возможно?Благодарю.Ниже приведен код.Прокрутка не работает.

 <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 ]

3 голосов
/ 03 марта 2012

(извините за мой плохой английский)

Это также зависит от того, какой элемент управления находится внутри списка. Если ваш список находится внутри Grid, он должен занимать все пространство этой сетки - если он находится внутри панели стека, он будет использовать наименьшее количество свободного пространства, поэтому вам придется использовать фиксированную высоту / ширину. Попробуйте это:

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

В списке должны использоваться все размеры экрана и отображаться вертикальные полосы прокрутки, если элементов достаточно.

0 голосов
/ 03 декабря 2012

Вы можете установить высоту в scrollviewer

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