繁体   English   中英

Datatrigger不触发情节提要或根本不触发

[英]Datatrigger Not Firing Storyboard Or Not At All

无论我做什么,我似乎都无法使数据触发器正常工作。 当值更改但没有发生任何事情,没有错误,找不到绑定,什么也没有的时候,我正在尝试从视图模型中播放一个故事图板。我当前试图开始工作的代码是:

XAML:

<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>

C#:

public int alert
    {
        get { return this._alert; }
        set
        {
            if (this._alert != value)
            {
                int oldalert = this._alert;
                this._alert = value;
                RaisePropertyChanged("alert");
            }
        }
    }

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

我发现您做错了两件事。 一种是应将触发器添加到Page.Triggers而不是Page.Resources 如果触发器在资源中,则永远不会触发。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM