2010-09-17 3 views
6

यह मुझे लंबे समय से परेशान कर रहा है और मुझे इसके लिए एक अच्छा स्पष्टीकरण नहीं मिल रहा है। इस मार्कअप में राउंड ब्रैकेट का उद्देश्य क्या है? क्या यह कास्टिंग के लिए एक एक्सएएमएल शॉर्टकट है? ऐसा लगता है कि यह एनिमेशन के लिए क्यों उपयोग किया जाता है?XAML एनिमेशन के लिए विशेषता मानों के आस-पास आपको राउंड ब्रैकेट क्यों चाहिए?

Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)" 

उत्तर

4

यह टाइप योग्य DependencyProperty टाइप करने के लिए वाक्यविन्यास है। यह आवश्यक है, क्योंकि Storyboard.TargetProperty संलग्न संपत्ति किसी भी DependencyObject से जुड़ी हो सकती है। इसका मतलब है कि XAML पार्सर को यह नहीं पता होगा कि गुणों को कैसे हल किया जाए जब तक वे पूरी तरह से योग्य नहीं होते।

यह वाक्यविन्यास भी संलग्न गुणों के लिए बाध्यकारी जैसी चीजों के लिए उपयोग किया जाता है। यहाँ इस प्रदर्शन करने के लिए एक काल्पनिक उदाहरण है:

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Border x:Name="Foo" Background="Blue" Grid.Row="10" /> 
    <Border x:Name="Bar" Background="Red" Height="{Binding (Grid.Row), ElementName=Foo}" /> 
</Grid> 

आप Binding से कोष्ठक निकालते हैं, तो आप (क्योंकि वहाँ Border तत्व पर कोई ग्रिड संपत्ति है) एक बाध्यकारी त्रुटि प्राप्त होगी।

0

यह केवल एनिमेशन के लिए इस्तेमाल नहीं किया है (मान्यता दिमाग में स्प्रिंग्स) - वे केवल स्थिर कॉल या डाले हैं, क्रमशः। मूल रूप से ऊपर कोड (छद्म कोड में) करने के लिए अनुवाद:

((RotateTransform)TextBlock.GetRenderTransform((TextBlock) element)).Angle = newValue; 

जहां तत्व तत्व यह है कि पर काम किया जाता है और newValue एनीमेशन गुण स्थापित है।

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