更改长列表框中的不透明度会使最后一个元素消失
我创建了一个列表框,其不透明度设置为小于 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”,其他元素的位置在底部,但它是完全黑色的。
到底是什么问题呢?
编辑:一位同事告诉我,这可能是虚拟化的问题,因为问题发生在 87 上,我们在屏幕上有 29 个可见项目(列表框虚拟化了显示项目数量的 3 倍,3*29 = 87)。 我使用 ItemsControl (没有虚拟化)进行了相同的测试,问题是相同的。
I created a listbox with an Opacity set to a value less than 1, and when I bind a long list, the last elements disappear.
I created a little sample to reproduce the problem
In the XAML, a listbox :
<ListBox x:Name="mainList" ItemsSource="{Binding}" Opacity="0.5"></ListBox>
and it is bound to a long list :
public MainPage()
{
InitializeComponent();
List<int> l = new List<int>();
for (int i = 0; i < 100; i++)
{
l.Add(i);
}
this.DataContext = l;
}
When I execute it, the last element I see is the "87", there is the place for the others elements in the bottom, but it is completely black.
What is the problem exactly ?
edit: a colleague told me it is probably a problem with virtualization, as the problem happens at the 87, and we have 29 items visible on the screen (the listbox virtualizes 3 times the number of items shown, 3*29 = 87).
I made the same test with an ItemsControl (without virtualization), and the problem is the same.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
*编辑 - 我能够重现您的问题 - 有一件事不会产生完全相同的 UI,但工作原理和外观相似,即将 ListBox 不透明度设置为 1,然后将 DataTemplate 中的 UI 元素设置为不透明度 0.5。
代码:
*Edit - I was able to reproduce your issue - one thing that does not produce exactly the same UI, but works and looks similar, is setting the ListBox opacity to 1, and then set the UI element in the DataTemplate to opacity 0.5.
Code: