gpt4 book ai didi

c# - ListBoxItem 动画和不透明度

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:16 25 4
gpt4 key购买 nike

我有一个带样式的列表框,包括带样式的 Listboxitem。我正在尝试创建一个将不透明度从 0 更改为 1 的动画,以使项目显示在列表中。我已设法使用以下代码做到这一点:

<Style x:Key="ListBoxStyle1" TargetType="ListBox">
<Setter Property="Foreground" Value="#FF393C3F" />
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<Border Name="Border" Background="{x:Null}" BorderBrush="Black" BorderThickness="0" Padding="0">
<ItemsPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem">
<Setter Property="Opacity" Value="0" />
<Setter Property="Height" Value="16" />
<Setter Property="VerticalContentAlignment" Value="Bottom" />
<Setter Property="VerticalAlignment" Value="Bottom" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="Border" Padding="10,1,0,0" Background="{x:Null}">
<ContentPresenter VerticalAlignment="Center" SnapsToDevicePixels="True" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="{StaticResource arrow}" />
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="#FF828689" />
</Trigger>
<Trigger Property="IsVisible" Value="true">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:0.4" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

一切正常(除此之外,我希望在当前和下一个项目动画开始之间有更多时间。但它有不透明度问题。一切可能都设置为透明,背景和所有。我使用透明.png 所选项目的画笔。

问题出在不透明动画上,最好在底部图片上看到:

Screenshot

这是动画中间的屏幕截图(当时列表框项目的不透明度为 0.8),您可以清楚地看到所有文本周围的白色背景。它在第一个选中的项目中更加明显,因为它使用透明的 .png。当动画结束且不透明度为 1.0 时,背景会神奇地消失。

如何解决这个问题?我是不是忘记设置背景了?

感谢您的帮助!

编辑:

我正在添加我的列表框声明:

<ListBox Height="239" HorizontalAlignment="Left" Margin="0,0,0,0" Name="listBox1" VerticalAlignment="Top" Width="145" Background="{x:Null}"  FontWeight="Black" FontSize="8" BorderBrush="{x:Null}" SnapsToDevicePixels="True" BorderThickness="0" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" Style="{StaticResource ListBoxStyle1}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VerticalAlignment="Top" Background="{x:Null}" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>

还有一个问题是:如何延迟每个列表框项目显示的动画,在下一个列表框项目显示之前延迟几毫秒?

感谢您的帮助。

最佳答案

这可能是系统相关的渲染异常,我尝试了那种风格(只需要使用我自己选择的项目图像,也是透明的 PNG)并且效果很好。
在我的一个应用程序中,设置为 RectangleFill 属性的图像在我的一台计算机(甚至具有相同的操作系统 Win7 Professional)上被奇怪地拉伸(stretch),因此不会闻所未闻...

关于c# - ListBoxItem 动画和不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com