Как получить ссылку на ItemsPanel списка Silverlight ListBox - PullRequest
2 голосов
/ 14 мая 2009

У меня есть ListBox в Silverlight2, который использует Grid в качестве ItemsPanelTemplate. В коде, как я могу получить ссылку на эту сетку?

<ItemsPanelTemplate x:Key="GridItemsPanel">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
    </Grid>
</ItemsPanelTemplate>

<ListBox ItemsPanel="{StaticResource GridItemsPanel}" />

Справочная информация:

Я пытаюсь сделать это, добавив в Grid детей, которые не являются ListBoxItems. Я пытаюсь получить что-то похожее на дневное представление календаря Outlook, где элементы могут быть выровнены по сетке с разрешением 30 минут. У меня есть сетка и позиционирование ListBoxItem, работающее правильно, однако я хотел бы иметь возможность отображать цвета фона, линии сетки, часовые метки и т. Д., Чтобы позволить пользователю четко видеть время и продолжительность ListBoxItems.

Ответы [ 3 ]

0 голосов
/ 20 мая 2009

Если ваша цель - создать список с пользовательским рендерингом, вот пример:

<ListBox x:Name="lstMails">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Background="Gray">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Column="0" Text="{Binding Path=Subject}" />
                <TextBlock Grid.Column="1" Text="{Binding Path=Sender}" />
                <TextBlock Grid.Column="2" Text="{Binding Path=SentTime}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

И установить ItemsSource свойство из кода позади или указав привязку:

lstMails.ItemsSource = /*collection of Mail objects*/;

Надеюсь, это было полезно.

0 голосов
/ 30 сентября 2009

Если вы действительно хотите получить ссылку, независимо от области имен, вы можете использовать VisualTreeHelper для ее просмотра. Я сделал это некоторое время назад, используя пользовательскую оболочку

http://blogs.vertigo.com/personal/jimbg/Blog/archive/2008/10/24/walk-the-visual-tree.aspx

0 голосов
/ 14 мая 2009

Вам необходимо присвоить сетке имя с атрибутом x: Name:

http://msdn.microsoft.com/en-us/library/cc189028(VS.95).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...