Silverlight Listbox с переменной высотой подгонки к содержанию - PullRequest
2 голосов
/ 02 сентября 2010

Как мне настроить список в Silverlight так, чтобы он имел переменную высоту?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

К какой высоте вы обращаетесь? Сам контроль? Или элементы внутри ListBox?

Если вы ссылаетесь на высоту элемента управления, по умолчанию он установлен на «растянуть», поэтому он расширится относительно своего родителя:

<Grid Name="LayoutRoot" Height="500">
   <ListBox />
</Grid>

Если вы хотите, чтобы ListBox расширялся без привязки к его родителю: установить его VerticalAlignment = "Top":

<Grid Name="LayoutRoot" Height="500">
   <ListBox VerticalAlignment="Top" />
</Grid>

или

<Grid Name="LayoutRoot" Height="500">
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
   </Grid.RowDefinitions>
   <ListBox VerticalAlignment="Top" Grid.Row="0" />
</Grid>

Сетка будет расширяться по отношению к ее содержимому, а не к его родителю. Вы также можете использовать конвертеры, связанные со свойством высоты, или установить высоту в коде XAML.

Если вы говорите о содержимом ListBox, создайте ItemTemplate. ItemTemplate будет определять, как будет отображаться каждое содержимое.

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

2 голосов
/ 08 апреля 2011

И это ответ::)

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
...