我有一个alternationcount设置为2的列表视图。我有一个listviewitem样式,它当前将listviewitem的背景颜色设置为交替颜色,我想添加第三个触发器,当绑定viewmodel的一个属性为true时,该触发器将触发colornanimation以在红色和白色之间设置颜色的动画(在本例中是一个属性称为“锁定”)。
我偶然发现了这篇文章,并尝试了下面的xaml:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e7897cbd-71d9-45e6-9b17-0cd5bde5859f
但是,在我鼠标移过或选择项目,然后选择或鼠标移过其他项目之前,动画似乎不会为我触发。我从前两个multidatatrigger获得了交替的颜色,但是当项目添加到集合时,动画不会触发。这是我的xaml:

    <Style x:Key="alternatingListViewItemStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="Background" Value="White" />
        <Style.Triggers>
            <MultiDataTrigger >
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ItemsControl.AlternationIndex)}" Value="0" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ListViewItem.IsSelected)}" Value="False" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Panel.IsMouseOver)}" Value="False" />
                    <Condition Binding="{Binding Locked}" Value="False" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Background" Value="DarkGray" />
                </MultiDataTrigger>
            <MultiDataTrigger >
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ItemsControl.AlternationIndex)}" Value="1" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ListViewItem.IsSelected)}" Value="False" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Panel.IsMouseOver)}" Value="False" />
                    <Condition Binding="{Binding Locked}" Value="False" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Background" Value="SlateGray" />
                </MultiDataTrigger>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ListViewItem.IsSelected)}"
                                         Value="False" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Panel.IsMouseOver)}"
                                         Value="False" />
                    <Condition Binding="{Binding Locked}"
                                         Value="True" />
                </MultiDataTrigger.Conditions>
                <MultiDataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation
                                Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)"
                                From="Red" To="White" Duration="0:0:0.2"
                                AutoReverse="True" RepeatBehavior="Forever" />
                        </Storyboard>
                    </BeginStoryboard>
                </MultiDataTrigger.EnterActions>
            </MultiDataTrigger>
        </Style.Triggers>
    </Style>

最佳答案

例如,我没有特定的语法,但是您可以尝试将触发器直接放在listview(不在参考资料中)上,并使用listview.itemcontainerstyle而不是syle。我无法让下面的简单代码在resources中工作,但是当我将它直接移到listview时,它工作了。我可能在参考资料中遇到语法错误。

    <ListView AlternationCount="2"
              ItemsSource="{Binding Path=...}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Style.Triggers>
                    <!-- setting up triggers for alternate background colors -->
                    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                        <Setter Property="Background" Value="Gainsboro"></Setter>
                    </Trigger>
                    <Trigger Property="ItemsControl.AlternationIndex" Value="2">
                        <Setter Property="Background" Value="White"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>
    <ListView.View>

关于c# - 将项目添加到ListView时,不会触发MultiDataTrigger的EnterActions中的ColorAnimation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5173645/

10-11 04:59
查看更多