Список с Wrappanel не будет отображать элементы - PullRequest
0 голосов
/ 28 мая 2011

Я довольно озадачен тем, почему, когда я вставляю WrapPanel для моей панели элементов ListBox в Silverlight 4, ничего не появляется.Если я только закомментирую ItemsPanel, я получу обычный вертикальный список моих маленьких картинок с текстом.Я добавил цвет фона в WrapPanel, чтобы убедиться, что WrapPanel действительно был там.Я полагаю, что я что-то упустил, что это?

    <ListBox Grid.Row="1" Grid.Column="1"
             ScrollViewer.HorizontalScrollBarVisibility="Disabled"
             MinHeight="24"
             >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border> <StackPanel> <Image> <TextBlock> </StackPanel> </Border> (pseudo template)
            </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel Background="Orange" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>

Ответы [ 3 ]

0 голосов
/ 29 мая 2011

Я воспроизвел ваш сценарий, используя образцы данных Blend, и я вижу элементы на панели обертки:

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
        x:Class="ASD_Answer012.MainPage"
        Width="640" Height="480">
        <UserControl.Resources>
            <DataTemplate x:Key="ItemTemplate">
                <StackPanel>
                    <TextBlock Text="{Binding Property1}"/>
                    <CheckBox IsChecked="{Binding Property2, Mode=TwoWay}"/>
                    <Image Source="{Binding Property3}" HorizontalAlignment="Left" Height="64" Width="64"/>
                </StackPanel>
            </DataTemplate>
            <ItemsPanelTemplate x:Key="ItemsWrapPanelTemplate">
                    <toolkit:WrapPanel Background="DarkOrange"/>
            </ItemsPanelTemplate>
        </UserControl.Resources>

        <Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource SampleDataSource}}">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <ListBox Grid.Column="1" Grid.Row="1" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}" ItemsPanel="{StaticResource ItemsWrapPanelTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"/>
        </Grid>
    </UserControl>

Вот что я получаю: WrapPanel Items

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

0 голосов
/ 30 мая 2011

Я понятия не имею, почему, но переключение на ObservableCollection для моего ItemsSource помогло. Понятия не имею, почему для ItemsPanel по умолчанию все будет иначе, чем для панели diff't, но это так.

Спасибо, что заглянули в это.

0 голосов
/ 28 мая 2011

Ничто в шаблоне вашего предмета не имеет никакого отношения к нему - оно полно пустых элементов.Положите туда что-нибудь, и вы должны увидеть результаты.например:

<DataTemplate>
    <TextBlock>Test</TextBlock>
</DataTemplate>
...