Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF边界数据触发奇怪的行为_Wpf_Data Binding_Storyboard_Caliburn.micro_Datatrigger - Fatal编程技术网

WPF边界数据触发奇怪的行为

WPF边界数据触发奇怪的行为,wpf,data-binding,storyboard,caliburn.micro,datatrigger,Wpf,Data Binding,Storyboard,Caliburn.micro,Datatrigger,当我为Binding={Binding IsCrit}设置值为“False”时,程序似乎运行良好,但这与我需要的正好相反,因为我只希望动画/故事板在某个技能的命中至关重要时播放。我只希望在IsCrit为“True”时播放彩色动画和故事板。但是,当我将值设置为True时,它就不会播放动画或情节提要 当我将其设置为false时,“动画”将在每个技能上播放,但当某个技能IsCrit为True时,动画将不会播放该项目。当我将Datatrigger值设置为True 我对WPF比较陌生,所以大部分WPF都是

当我为
Binding={Binding IsCrit}
设置
为“False”时,程序似乎运行良好,但这与我需要的正好相反,因为我只希望动画/故事板在某个技能的命中至关重要时播放。我只希望在
IsCrit
“True”
时播放彩色动画和故事板。但是,当我将
值设置为
True
时,它就不会播放动画或情节提要

当我将其设置为false时,“动画”将在每个技能上播放,但当某个技能
IsCrit
True
时,动画将不会播放该项目。当我将
Datatrigger
值设置为
True

我对WPF比较陌生,所以大部分WPF都是我在网上找到的片段。这是否与我的
边框
位于
堆栈面板
中有关

整个过程被包装在一个
ListView.ItemTemplate
中,因为这可能与它不工作有关


下面是我的
能力view.xaml的完整分类


大约每1-2秒插入一个新项目,因此我不需要对该项目使用
NotifyPropertyChanged
事件。其他项以相同的方式绑定,一个新的视图模型被插入到
列表视图所使用的集合中

复制到剪贴板时,Caliburn micro click事件也可以正常工作。我唯一的问题是当值为true时事件没有触发。此数据是否仅在发生更改时触发


当一个值为真时,是否有办法使用条件触发器?

这就是我解决问题的方法。使用两个不同的模板,并实现
TemplateSelector

public class AbilityItemTemplateSelector : DataTemplateSelector
{
    public DataTemplate Critical { get; set; }
    public DataTemplate Normal { get; set; }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var logItem = item as CombatLogViewModel;

        if (logItem != null)
        {
            return logItem.IsCrit ? Critical : Normal;
        }

        return base.SelectTemplate(item, container);
    }
}

您的意思是当y