2011-03-08 11 views
6

मेरे पास IsLoginWrong नामक एक बुलियन संपत्ति है, यदि मैं IsLoginWrong सत्य है तो मैं एक स्टोरीबोर्ड एनीमेशन खेलना चाहता हूं। (IsLoginWrong एक OnPropertyChanged घटना करता है, तो मुझे पता है कि बाध्यकारी ठीक है) लेकिन मुझे वाक्यविन्यास के साथ एक कठिन समय हो रहा है। यह भी सही नहीं हो सकता है, लेकिन मुझे लगता datatriggers केवल शैलियाँ में रह सकते हैं ...डब्ल्यूपीएफ/सिल्वरलाइट: एमवीवीएम में स्टोरीबोर्ड एनीमेशन को डेटा ट्रिगर कैसे करें?

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource LoginWrong}"/> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Style> 

लेकिन यह एक अपवाद "एक शैली में एक स्टोरीबोर्ड पेड़ एक टार्गेटनाम निर्दिष्ट नहीं कर सकते" ... शैलियों beause बूँद फार्म उल्लेख फेंकता वस्तुओं के लिए विशेष रूप से .. कमाल। तो मैं ऐसा कैसे करूं जो मैं करने की कोशिश कर रहा हूं? (नाटक एनीमेशन अगर MVVM में एक बूलियन परिवर्तन)

धन्यवाद

+0

इस 5 साल बाद वापस देखकर, एमवीवीएम शायद मेरे करियर में समय का सबसे बड़ा अपशिष्ट था। कोड में ऐसा करने के लिए बेहतर है। – foreyez

उत्तर

11

एक शैली आप एक स्टोरीबोर्ड नाम का उल्लेख नहीं कर सकते हैं के भीतर। तो जिस तरह से मैं इसे काम करने के लिए मिला है वास्तविक शैली के भीतर अपने स्टोरीबोर्ड को गिरवी रखना है:

<UserControl.Style>  
    <Style>   
     <Style.Triggers>    
      <DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True">      
       <DataTrigger.EnterActions>      
        <BeginStoryboard> 
         <Storyboard> 
          .... PUT YOUR ACTUAL STORY BOARD IN HERE ... 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.EnterActions>    
      </DataTrigger>   
     </Style.Triggers>  
    </Style> 
</UserControl.Style> 

अब DataTriggers या तो शैलियों या नियंत्रण टेम्पलेट्स में रखा जा सकता है, तो नियंत्रण टेम्पलेट्स के साथ ऐसा करने के लिए एक अच्छा तरीका हो सकता है । लेकिन यह वही है जो मैं समय के साथ आया था।

2

एक विकल्प VisualStateManager का उपयोग कर स्टोरीबोर्ड शुरू करना होगा। http://blogs.infosupport.com/blogs/alexb/archive/2010/04/02/silverlight-4-using-the-visualstatemanager-for-state-animations-with-mvvm.aspx पर आलेख बताता है कि एक संलग्न संपत्ति का उपयोग कर दृश्य मॉडल से VisualStateManager की वर्तमान स्थिति को कैसे नियंत्रित करें।

+0

बिल्कुल वही जो मैं देख रहा था धन्यवाद। शर्मिंदा हालांकि एक आसान तरीका नहीं है। – BenBtg

संबंधित मुद्दे