我创建了一个列表框,其中Opacity设置为小于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(没有虚拟化)进行了相同的测试,问题是一样的。
答案 0 :(得分:1)
*编辑 - 我能够重现你的问题 - 有一件事不会产生完全相同的UI,但是工作和看起来相似,是将ListBox不透明度设置为1,然后将DataTemplate中的UI元素设置为不透明度0.5。
代码:
<ListBox x:Name="mainList" ItemsSource="{Binding}" Opacity="1">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Opacity="0.5" Text="{Binding}">
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>