Tôi đang sử dụng hình ảnh được lưu trữ trên máy chủ trong ứng dụng C#/XAML WinRT của tôi. Khi hình ảnh đó được tải xuống, tôi muốn nó mờ đi. Tôi nhận thấy các FadeInThemeAnimation
đó là những gì tôi đã hy vọng để sử dụng. Nhưng, tôi muốn sử dụng nó như một EntranceThemeTransition
. Có cách nào để làm việc này không? nếu vậy, làm thế nào?Sử dụng FadeInThemeAnimation làm Chuyển đổi trong WinRT
Trả lời
Tôi đã gặp sự cố tương tự nhưng đã tìm thấy giải pháp, tôi nghĩ rằng vẫn có thể hữu ích khi chia sẻ nó.
Dường như FadeInThemeAnimation
là loại hoạt ảnh đặc biệt không hoạt động trên Độ mờ và Khả năng hiển thị như bạn nghĩ, nhưng trên RenderTransform của một mục. Tôi chỉ quản lý để làm cho nó hoạt động khi fading ra mục đầu tiên với FadeOutThemeAnimation
.
Nhưng đây là giải pháp thay thế. Trong XAML của bạn, thêm một Storyboard để Tài nguyên container của hình ảnh của bạn, như thế này:
<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 ...}"/>
...
Sau đó, thêm một handler để ImageOpened
sự kiện của hình ảnh:
<Image x:Name="yourImage" Source="{Binding ...}" ImageOpened="OnImageOpened"/>
Và trong code-behind:
private void OnImageOpened(object sender, RoutedEventArgs e)
{
ImageFadeInStoryboard.Begin();
}
Hy vọng rằng sẽ giúp :)
Một cách tiếp cận khác là tạo một attac hành vi HED rằng "Listening" tới boolean ràng buộc để bắn các hình ảnh động chủ đề:
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();
}
}
}
Để đính kèm hành vi để một XAML DependencyObject (Grid trong ví dụ này) sử dụng như sau:
<Grid local:VisibilityAnimationBehavior.IsVisible="{Binding Path=TheBooleanBinding}">
Cảm ơn. Tôi thích cách tiếp cận này với các thuộc tính được gắn vào. – Sven
- 1. Chuyển đổi tùy chỉnh WinRT XAML
- 2. Thay đổi văn hóa giao diện người dùng trong WinRT
- 3. Ứng dụng WinRT có thể sử dụng obfuscation không?
- 4. Làm cách nào để de/serialize JSON trong WinRT?
- 5. DataContractSerializer trong WinRT
- 6. Sử dụng "||" trong báo cáo chuyển đổi trong java
- 7. Sử dụng EnumMemberAttribute và làm chuyển đổi chuỗi tự động
- 8. Sử dụng || trong trường hợp chuyển đổi trong Rails
- 9. "ống đang được đóng" khi sử dụng WinRT Geolocator
- 10. Chuyển đổi và sử dụng DataTable trong WPF DataGrid?
- 11. HttpUtility.HtmlDecode trong WinRT
- 12. Báo cáo chuyển đổi - sử dụng hoặc?
- 13. (-) Symbol Được sử dụng trong Chuyển đổi phương pháp
- 14. Tạo các tab trong WinRT
- 15. Sử dụng loại enum trong câu lệnh chuyển đổi
- 16. Sử dụng hằng chuỗi trong chuyển đổi ngầm
- 17. Thay thế WinRT cho System.ComponentModel.TypeConverter
- 18. System.Reflection.Assembly.GetExecutingAssembly() trong WinRT
- 19. Khi nào sử dụng câu lệnh chuyển đổi trong Java
- 20. Chuyển đổi thời gian sử dụng trong mysql
- 21. Enums, sử dụng trong trường hợp chuyển đổi
- 22. Cách sử dụng Chuyển đổi trong SQL Server
- 23. Sử dụng Tuyên bố Chuyển đổi trong Obj-C
- 24. Tôi có thể sử dụng Sqlite trong ứng dụng WinRT (javascript) không?
- 25. Thay đổi appmanifest của một ứng dụng WinRT phá hủy dữ liệu ứng dụng
- 26. Làm rõ bằng WinRT và .NET
- 27. Winrt GridView Virtualization
- 28. WinRT/Metro Animation trong code-behind
- 29. Làm thế nào để chuyển đổi Platform :: String thành char *?
- 30. làm cách nào để sử dụng giá trị enum trên báo cáo chuyển đổi trong C++
Cá nhân tôi không thể sử dụng điều này bởi vì nó có code-behind. Nó xuất hiện có STILL không tái sử dụng, cách đơn giản để làm điều này. Tôi có nghĩa là, những người đã từng không muốn phai một hình ảnh trong ngày tải (thậm chí từ đĩa). Không thể tin được. –
Có, bạn có thể tạo một lớp mới kế thừa từ Hình ảnh và đóng gói hành vi này. Bạn cũng có thể tạo hành vi hình ảnh hoặc thuộc tính phụ thuộc đính kèm. Có rất nhiều cách để làm điều này mà không cần code-behind. –