Изменение непрозрачности в длинном списке приводит к исчезновению последних элементов - PullRequest
3 голосов
/ 20 мая 2011

Я создал список со значением непрозрачности, установленным на значение меньше 1, и когда я связываю длинный список, последние элементы исчезают.

Я создал небольшой образец, чтобы воспроизвести проблему

В XAML есть список:

<ListBox x:Name="mainList" ItemsSource="{Binding}" Opacity="0.5"></ListBox>

и он связан с длинным списком:

   public MainPage()
    {
        InitializeComponent();
        List<int> l = new List<int>();
        for (int i = 0; i < 100; i++)
        {
            l.Add(i);
        }

        this.DataContext = l;
    }

Когда я выполняю его, последний элемент, который я вижу, это «87», в нижней части есть место для остальных элементов, но он полностью черный.

В чем конкретно проблема?

edit: коллега сказал мне, что это, вероятно, проблема с виртуализацией, так как проблема происходит на 87, и у нас есть 29 элементов, видимых на экране (список виртуализируется в 3 раза больше отображаемых элементов, 3 * 29 = 87). Я сделал тот же тест с ItemsControl (без виртуализации), и проблема та же.

1 Ответ

1 голос
/ 20 мая 2011

* Редактировать - я смог воспроизвести вашу проблему - одна вещь, которая не производит точно такой же интерфейс, но работает и выглядит аналогично, устанавливает непрозрачность ListBox равной 1, а затем устанавливает непрозрачность для элемента пользовательского интерфейса в DataTemplate. 0,5.

Код:

        <ListBox x:Name="mainList" ItemsSource="{Binding}" Opacity="1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Opacity="0.5" Text="{Binding}">

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