数据触发器不触发情节提要或根本不触发



无论我做什么,我似乎都无法让数据触发器工作。当值更改但没有任何反应时,我正在尝试从视图模型播放故事板,没有错误,找不到绑定,什么都没有......我目前正在尝试工作的代码是:

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那么它默认为当前元素,即页面。否则,请设置要为其边距添加动画效果的元素的名称。

相关内容

  • 没有找到相关文章

最新更新