में एक संक्रमण के रूप में एक FadeInThemeAnimimation का उपयोग कर मैं अपने सी #/XAML WinRT ऐप में किसी सर्वर पर होस्ट की गई छवि का उपयोग कर रहा हूं। जब वह छवि डाउनलोड हो जाती है, तो मैं इसे फीका करना चाहता हूं। मैंने FadeInThemeAnimation
देखा जो मैं उपयोग करने की उम्मीद कर रहा था। लेकिन, मैं इसे EntranceThemeTransition
की तरह उपयोग करना चाहता हूं। क्या इसे करने का कोई तरीका है? यदि हां, तो कैसे?WinRT
WinRT
उत्तर
मैं एक ही मुद्दे में भाग गया हूं लेकिन एक समाधान मिला, मैंने सोचा कि यह अभी भी इसे साझा करने के लिए उपयोगी हो सकता है।
स्पष्ट रूप से FadeInThemeAnimation
एक विशेष प्रकार की एनीमेशन है जो ओपेसिटी और दृश्यता पर काम नहीं करती है जैसा कि आप सोच सकते हैं, लेकिन किसी आइटम के रेंडरट्रांसफॉर्म पर। FadeOutThemeAnimation
के साथ आइटम को पहले बाहर निकालते समय मैंने इसे केवल काम करने में कामयाब रहा है।
लेकिन यहां एक कामकाज है। अपने XAML में आपकी छवि का कंटेनर की संसाधन के लिए एक स्टोरीबोर्ड जोड़ने के लिए, इस तरह:
<Image x:Name="yourImage" Source="{Binding ...}" ImageOpened="OnImageOpened"/>
और में कोड-पीछे:
private void OnImageOpened(object sender, RoutedEventArgs e)
{
ImageFadeInStoryboard.Begin();
}
<Grid>
<Grid.Resources>
<Storyboard x:Name="ImageFadeInStoryboard">
<DoubleAnimation From="0" To="1" Storyboard.TargetName="yourImage" Storyboard.TargetProperty="Opacity" Duration="0:0:0.6" />
</Storyboard>
</Grid.Resources>
<Image x:Name="yourImage" Source="{Binding ...}"/>
...
तब छवि के ImageOpened
घटना के लिए एक हैंडलर जोड़ने
आशा है कि मदद करता है :)
एक और दृष्टिकोण एक अटैक बनाने के लिए है hed व्यवहार है कि एक बूलियन करने के लिए "सुनता है" विषय एनीमेशन आग के लिए बाध्य:
static class VisibilityAnimationBehavior
{
public static readonly DependencyProperty IsVisibleProperty = DependencyProperty.RegisterAttached("IsVisible", typeof(bool), typeof(VisibilityAnimationBehavior), new PropertyMetadata(true, IsVisibleChanged));
public static bool GetIsVisible(DependencyObject Target) { return (bool)Target.GetValue(IsVisibleProperty); }
public static void SetIsVisible(DependencyObject Target, bool Value) { Target.SetValue(IsVisibleProperty, Value); }
static void IsVisibleChanged(DependencyObject Source, DependencyPropertyChangedEventArgs Arguments)
{
bool OldValue = (bool)Arguments.OldValue;
bool NewValue = (bool)Arguments.NewValue;
DependencyObject ParentObject = Source as DependencyObject;
if(ParentObject == null)
return;
if(NewValue == true && OldValue != true)
{
Storyboard TransitionStoryboard = new Storyboard();
Storyboard.SetTarget(TransitionStoryboard, ParentObject);
TransitionStoryboard.Children.Add(new FadeInThemeAnimation());
TransitionStoryboard.Begin();
}
else if(NewValue == false && OldValue != false)
{
Storyboard TransitionStoryboard = new Storyboard();
Storyboard.SetTarget(TransitionStoryboard, ParentObject);
TransitionStoryboard.Children.Add(new FadeOutThemeAnimation());
TransitionStoryboard.Begin();
}
}
}
आदेश एक XAML DependencyObject (इस उदाहरण में एक ग्रिड) के व्यवहार को संलग्न करने में निम्नलिखित का उपयोग करें:
<Grid local:VisibilityAnimationBehavior.IsVisible="{Binding Path=TheBooleanBinding}">
धन्यवाद। मुझे अनुलग्नक गुणों के साथ इस दृष्टिकोण को पसंद है। – Sven
- 1. WinRT
- 2. WinRT
- 3. WinRT
- 4. WinRT
- 5. WinRT
- 6. WinRT
- 7. WinRT
- 8. WinRT
- 9. WinRT
- 10. WinRT
- 11. WinRT
- 12. WinRT
- 13. WinRT
- 14. WinRT
- 15. WinRT XAML
- 16. HttpUtility.HtmlDecode WinRT
- 17. चयनित WinRT
- 18. WinRT XAML
- 19. AppBarButtonSyle WinRT
- 20. कैसे WinRT घटनाओं नेट
- 21. Winrt GridView वर्चुअलाइजेशन
- 22. क्या WinRT सेवा
- 23. विंडोज 8/WinRT
- 24. WinRT XAML कस्टम संक्रमण
- 25. सी # WinRT घटक
- 26. WinRT छवि हैंडलिंग
- 27. मेट्रो स्टाइल ऐप (WinRT)
- 28. WinRT StorageFile डाउनलोड फ़ाइल
- 29. WinRT SQLite एन्क्रिप्शन
- 30. यदि पुस्तक दर्शक WinRT
व्यक्तिगत रूप से मैं इसका उपयोग नहीं कर सकता क्योंकि इसमें कोड-पीछे है। ऐसा लगता है कि ऐसा करने के लिए अभी तक कोई पुन: प्रयोज्य, सरल तरीका नहीं है। मेरा मतलब है, जो कभी भी लोड पर एक छवि को फीका नहीं करना चाहता था (डिस्क से भी)। अविश्वसनीय। –
वहां, आप छवि से विरासत में प्राप्त एक नई कक्षा बना सकते हैं और इस व्यवहार को समाहित कर सकते हैं। आप एक छवि व्यवहार या संलग्न निर्भरता संपत्ति भी बना सकते हैं। कोड-बैक के बिना ऐसा करने के कई तरीके हैं। –