2012-02-09 75 views
2

我有以下datatrigger,但exitactions未觸發。進入行動工作找到。我也嘗試將綁定轉換爲布爾值來查看它是否與null有關,但這也沒有幫助。我有什麼錯,爲什麼不是我的退出行爲在這裏開火?DataTrigger.ExistActions未針對綁定值「null」觸發

<DataTrigger Binding="{Binding }" Value="{x:Null}"> 
    <DataTrigger.EnterActions> 
     <BeginStoryboard> 
      <Storyboard> 
       <DoubleAnimation Storyboard.TargetProperty="Opacity" To=".5" From="0" Duration="0:0:1"></DoubleAnimation> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.EnterActions> 
    <DataTrigger.ExitActions> 
     <BeginStoryboard> 
      <Storyboard> 
       <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" From=".5" Duration="0:0:1"></DoubleAnimation> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.ExitActions> 
</DataTrigger> 

編輯:東西STANGE必須回事,因爲我也試着服用故事板的方程,只是使用塞特 - 現在什麼也沒有發生......

所以,代替這一點,我會後整個TextBlock的,也許有人能指出我錯過了什麼

<Grid DataContext="{Binding ElementName=ConfigTree, Path=SelectedItem.Details}"> 


        <TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" Padding="10" VerticalAlignment="Center" FontWeight="Bold" FontSize="14" Opacity="0"> 
         Select a configuration on the right to modify its selected columns 
         <TextBlock.Style> 
          <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding }" Value="{x:Null}"> 
             <DataTrigger.EnterActions> 
              <BeginStoryboard> 
               <Storyboard Duration="0:0:1"> 
                <DoubleAnimation Storyboard.TargetProperty="Opacity" To=".5" From="0" Duration="0:0:1"></DoubleAnimation> 
               </Storyboard> 
              </BeginStoryboard> 
             </DataTrigger.EnterActions> 
             <DataTrigger.ExitActions> 
              <BeginStoryboard> 
               <Storyboard> 
                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" From=".5" Duration="0:0:1"></DoubleAnimation> 
               </Storyboard> 
              </BeginStoryboard> 
             </DataTrigger.ExitActions> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </TextBlock.Style> 
        </TextBlock> 

ConfigTree是一個treeview,SelectedItem.Details是一個實現了observablecollection和INotifyPropertyChanged的類。我使用調試器進行了檢查,該綁定正確更新,並來回切換到我的實例值和空值。

+0

btw,我已經確認綁定確實正確更新。綁定正在變化爲一個空值,因爲我期待 - 但沒有退出行動:( – mark 2012-02-09 15:54:35

回答

0

對我有用!

  <CheckBox x:Name="MyCheckBox" 
        IsThreeState="True" 
        Content="I am Tristate! Check Me"/> 

     <TextBox x:Name="MyTextBlock" 
        Background="Cyan" 
        Text="1234567890"> 
      <TextBox.Style> 
       <Style TargetType="{x:Type TextBox}"> 
        <Style.Triggers> 
         <DataTrigger 
          Binding="{Binding ElementName=MyCheckBox, 
               Path=IsChecked}" 
          Value="{x:Null}"> 
          <DataTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <DoubleAnimation 
              Storyboard.TargetProperty="Opacity" 
              To=".5" From="0" 
              Duration="0:0:1"> 
             </DoubleAnimation> 
            </Storyboard> 
           </BeginStoryboard> 
          </DataTrigger.EnterActions> 
          <DataTrigger.ExitActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <DoubleAnimation 
              Storyboard.TargetProperty="Opacity" 
              To="0" From="0.5" 
              Duration="0:0:1"> 
             </DoubleAnimation> 
            </Storyboard> 
           </BeginStoryboard> 
          </DataTrigger.ExitActions> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </TextBox.Style> 
     </TextBox> 
+0

謝謝,至少現在我知道這不是由於使用exitactions的誤解。仍然,退出行動對我來說不'我似乎正在發射並改變我的不透明度,就像我期望的那樣,我已經驗證綁定確實正在使用DebugConverter +斷點從null更改爲實例,當發生null入侵時,我的opacity會輸入動作觸發器,但設置爲exitaction沒有的實例。什麼會導致這種情況? – mark 2012-02-10 13:52:49