2014-02-20 26 views
0

我似乎無法讓數據觸發器工作,無論我做什麼。我試圖從視圖模型播放一個故事板,當一個值發生變化時,沒有任何反應,沒有錯誤,沒有找不到綁定,只是沒有...我正在嘗試使用的代碼是:Datatrigger沒有觸發Storyboard或根本沒有

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,我知道綁定工作作爲網頁上的所有其他綁定正確顯示其綁定的網頁但我似乎無法獲得數據觸發器的工作。我可以使用一點點幫助在這個擊倒:/

回答

0

我看到兩件事你做錯了。一個是觸發器應該被添加到Page.Triggers而不是Page.Resources。如果觸發器位於資源中,它將永遠不會觸發。其他的是Storyboard.TargetName="alert"。除非在Page中有一個名爲alert的元素,否則不應該將其設置爲警報。我相信如果你不添加Story.TargetName那麼它默認爲當前頁面的元素。否則,請設置要爲其邊距設置動畫的元素的名稱。

+0

好吧,我會盡快做到這一點,只要我回來了。 TY。 – Keleko