2010-05-24 15 views
5

एक त्वरित प्रश्न की तरह: क्या एक्सएएमएल से व्यूस्टेट सक्रिय करना संभव है? मैं केवल VisualStateManager.GotoState() विधि का उपयोग कर CS से एक को सक्रिय करने में सक्षम हूं। अगर यह आसानी से संभव हो तो यह मेरे कुछ एमवीवीएम मुद्दों को ठीक करेगा।डब्ल्यूपीएफ/सिल्वरलाइट स्टेट्स - एक्सएएमएल से सक्रिय करें?

धन्यवाद

उत्तर

7

आप ब्लेंड व्यवहार, ट्रिगर और कार्यों से परिचित हैं वहाँ एक GoToStateAction जो Microsoft.Expression.Interactivity.Core नाम स्थान का एक हिस्सा है। आपको इंटरैक्टिविटी असेंबली का संदर्भ देना होगा जो Blend SDK का हिस्सा हैं।

एक बार जब आप संदर्भ स्थापित कर लेते हैं तो यह कुछ प्रकार के ट्रिगर पर प्रतिक्रिया करने के लिए GoToStateAction को निर्दिष्ट करने के रूप में आसान है ... सभी XAML में।

<UserControl x:Class="SilverlightApplication1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"> 
    <Grid x:Name="LayoutRoot"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="Loaded"> 
       <ic:GoToStateAction StateName="MyVisualState"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
     ... 
    </Grid> 
</UserControl> 

अधिक जानकारी और विशिष्ट GoToState कार्रवाई here के बारे में ट्यूटोरियल: यहाँ एक उदाहरण है जो कार्रवाई एक EventTrigger का उपयोग कर लोडेड घटना के बंद सक्रिय करता है।

EDIT: यह उत्तर सिल्वरलाइट के लिए विशिष्ट है, यह सुनिश्चित नहीं है कि यह WPF में उपलब्ध है या नहीं।

+0

मैं मिश्रण 4 का उपयोग कर रहा हूं, क्या मुझे अभी भी मिश्रण 3 एसडीके की आवश्यकता होगी? --- नहीं। – Peanut

+0

यह पूरी तरह से काम किया। बहुत धन्यवाद!!! – Peanut

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