Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
C# Datatrigger未启动故事板或根本不启动_C#_Wpf_Viewmodel_Datatrigger - Fatal编程技术网

C# Datatrigger未启动故事板或根本不启动

C# Datatrigger未启动故事板或根本不启动,c#,wpf,viewmodel,datatrigger,C#,Wpf,Viewmodel,Datatrigger,无论我做什么,我似乎都无法让数据触发器工作。我试图从视图模型播放一个故事板,当一个值发生变化时,却什么也没有发生,没有错误,没有找不到绑定,什么都没有。。。我当前尝试使用的代码是: XAML: 我可以看到int警报正确地更改为1,我知道页面绑定正在工作,因为页面上的所有其他绑定都正确地显示了它们的绑定,但我似乎无法让数据触发器工作。在这个问题上我需要一些帮助:/我发现你有两件事做错了。一个是触发器应该添加到页面。触发器而不是页面。参考资料。如果触发器在资源中,它将永远不会触发 另一个是故事板。T

无论我做什么,我似乎都无法让数据触发器工作。我试图从视图模型播放一个故事板,当一个值发生变化时,却什么也没有发生,没有错误,没有找不到绑定,什么都没有。。。我当前尝试使用的代码是:

XAML:


我可以看到int警报正确地更改为1,我知道页面绑定正在工作,因为页面上的所有其他绑定都正确地显示了它们的绑定,但我似乎无法让数据触发器工作。在这个问题上我需要一些帮助:/

我发现你有两件事做错了。一个是触发器应该添加到
页面。触发器
而不是
页面。参考资料
。如果触发器在资源中,它将永远不会触发

另一个是故事板。TargetName=“alert”。除非
页面中有名为alert的元素,否则不应将其设置为alert。我相信如果不添加
Story.TargetName
,那么它默认为当前元素,即页面。否则,请设置要为其边距设置动画的元素的名称

<Page
 DataContext="{Binding ViewModel, Source={StaticResource Locator}}">
 <Page.Resources>
   <DataTrigger x:Key="alertInDataTrigger" Binding="{Binding alert}" Value="1">
      <DataTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource alertIn}" x:Name="alertIn_start"/>
      </DataTrigger.EnterActions>
      <DataTrigger.ExitActions>
            <RemoveStoryboard BeginStoryboardName="alertIn_start" />
      </DataTrigger.ExitActions>
   </DataTrigger>

   <Storyboard x:Key="alertIn" Changed="visible" >
     <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" Storyboard.TargetName="alert">
        <EasingThicknessKeyFrame KeyTime="0:0:0.3" Value="729,2,2,658"/>
     </ThicknessAnimationUsingKeyFrames>
   </Storyboard>
 <\Page.Resources>
public int alert
    {
        get { return this._alert; }
        set
        {
            if (this._alert != value)
            {
                int oldalert = this._alert;
                this._alert = value;
                RaisePropertyChanged("alert");
            }
        }
    }