- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 ListView,AlternationCount 设置为 2。我有一个 ListViewItem 样式,当前将 ListViewItem 的背景颜色设置为交替颜色,我想添加第三个触发器,它触发 ColorAnimation 来为红色之间的颜色设置动画当绑定(bind)的 ViewModel 的属性为真时为 White(在本例中为名为“Locked”的属性)。
我偶然发现了这篇文章,并尝试了底部的 xaml:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e7897cbd-71d9-45e6-9b17-0cd5bde5859f
但是,在我将鼠标悬停在或选择该项目上,然后选择或将鼠标悬停在另一个项目上之前,动画似乎不会为我触发。我从前两个 MultiDataTriggers 获得了交替颜色,但是当将项目添加到集合中时动画不会触发。这是我的 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。我无法使下面的简单代码在 Resouces 中工作,但是当我将它直接移动到 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/
我有 MultiDataTrigger看起来像这样:
我想为我的 TabControl 使用一个 MultiDataTrigger。悬停在选项卡时,应更改颜色。但如果选择了 Tab,则不会。我尝试了 MultiDataTrigger。但这似乎不起作用。这
我有一个 ListView 声明为: 和定义为的样式
在 View 模型上显示多个 View 的 WPF-MVVM 应用程序。用户可以在运行时从不太详细的 View 转到更详细的 View 。 View 包含在边界内。在一组条件下, View 模型会触发
我目前正在分析一些使用广泛使用 MultiDataTriggers 的样式的 XAML。 (每种样式 8-10 个多数据触发器,每个触发器有 4-6 个条件)。当看到这个时,我正在考虑使用 conve
在 UserControl 中,我有一个 enum 类型的 DP(eGroupStyle 类型的 GroupStyle)和一个 DP bool 类型 (IsGrouped)。我需要在所有可能的条件下开
我只想在我的两个数据网格都选择了项目时才启用按钮。现在,当其中一个数据网格有选择时,它就会被启用。有什么想法吗?
我已经实现了一个 WPF 用户控件,我想在这里实现的是鼠标悬停在主网格上时,一些堆栈面板应该隐藏。我需要有多个触发条件。尽管到处寻找,但我无法找到我做错了什么。 UserControl资源如下
我正在尝试在我的 Button 上设置多个 DataTriggers。我做了一些研究,发现 MultiDataTrigger 允许您执行此操作。如果 CCTVPath == string.Empty
在 Silverlight 中,更改按钮等控件的模板时,最好使用 VisualStateManager 吗? 或者是否支持 Silverlight 中的数据触发器等触发器? 我只是想在工作中保持 WP
我遇到了一种情况,我可以通过使用 MultiDataTrigger 轻松实现相同的功能。或者,或者,使用 DataTrigger与 MultiBinding .是否有任何实质性理由偏爱一种方法而不是另
我从一些示例中看到可以组合这种触发器: 使用这种数据触发器: 通过使用这样的 MultiDataTrigger:
我想使用转换器创建一个触发器,如果绑定(bind)属性之一为 true,则该转换器返回 true。 像这样 public class TestConverter : IMultiValueConv
我有一个 ListView,AlternationCount 设置为 2。我有一个 ListViewItem 样式,当前将 ListViewItem 的背景颜色设置为交替颜色,我想添加第三个触发器,它
我是一名优秀的程序员,十分优秀!