您好我正在使用WPF网格来表示数据。 我有一个叫做微调器的图像。我想在加载数据(已经完成)以及更新数据时显示微调器。任何人都可以告诉我如何添加触发器,以便微调器在数据源更新或更改时显示?我尝试过SourceUpdated,但它不是RoutedEvent。 WPF新手,如果这是初学者的问题,请道歉。
<UserControl x:Class="My.IGrid.IGridControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<Storyboard x:Key="Spin360" Storyboard.TargetName="Spinner" Storyboard.TargetProperty="RenderTransform.(RotateTransform.Angle)">
<DoubleAnimation From="0" To="360" BeginTime="0:0:0" Duration="0:0:1.0" RepeatBehavior="Forever" />
</Storyboard>
</UserControl.Resources>
<Grid Name="RootGrid">
<Border>
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="LightGray" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Name="SplashPanel" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.ZIndex="0">
<Image Name="Spinner" Source="/My.IGrid;component/Images/spinner.png" Width="32" Height="32" RenderTransformOrigin="0.5, 0.5">
<Image.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboard Storyboard="{StaticResource Spin360}" />
</EventTrigger.Actions>
</EventTrigger>
</Image.Triggers>
<Image.RenderTransform>
<RotateTransform Angle="0" />
</Image.RenderTransform>
</Image>
</StackPanel>
</Border>
</Grid>
</UserControl>
答案 0 :(得分:0)
通常,我们将这样的属性添加到我们的视图模型或后面的代码中:
public bool IsBusy { get: set: } // Implement INotifyPropertyChanged interface here
然后每当我们调用一个长时间运行的方法时,我们将其设置为true
:
IsBusy = true;
每当长时间运行的方法完成后,我们将其设置为false
:
IsBusy = false;
现在的诀窍是使用bool
将此Visibility
属性绑定到微调器Image
的{{1}}属性:
BooleanToVisibilityConverter
当然,您需要将<Image Name="Spinner" Visibility="{Binding IsBusy, Converter={StaticResource
BooleanToVisibilityConverter}}" ... />
名为Converter
的实例添加到BooleanToVisibilityConverter
部分,但我会假设您已经知道该怎么做此
更新&gt;&gt;&gt;
不,我认为我的误解是我的不好......我现在看到你的代码很清楚,但我以前一定不能正常看。如果您正在使用课程后面的Resources
代码,那么当您UserControl
可见时,您应该可以访问Storyboard
并从代码中启动它:
Image
但是,我认为您会发现在将数据加载到UI控件时它不会正常动画,因为这也将使用单个UI线程。在从后台线程中的数据库加载数据时应该没问题,所以你可能会发现它在短时间内工作然后冻结。