【发布时间】:2020-08-13 11:56:04
【问题描述】:
我绑定了 3 个标签,如下所示
<StackLayout>
<Label Padding="1" Text="VRN" FontSize="25" TextColor="Black" VerticalOptions="Center" HorizontalTextAlignment="Center"/>
<Label Padding="1" Text="{Binding VRN}" TextColor="#ba000d" FontSize="100" FontAttributes="Bold" VerticalOptions="Center" HorizontalTextAlignment="Center"/>
<Label Padding="1" Text="Make" FontSize="25" TextColor="Black" VerticalOptions="Center" HorizontalTextAlignment="Center"/>
<Label Text="{Binding Make}" TextColor="#ba000d" FontSize="100" FontAttributes="Bold" VerticalOptions="Center" HorizontalTextAlignment="Center"/>
<Label Text="{Binding Model}" TextColor="#ba000d" FontSize="30" FontAttributes="Bold" VerticalOptions="Center" HorizontalTextAlignment="Center"/>
</StackLayout>
绑定在 ItemModel 中完成,如下所示
string _vrn = "";
public string VRN
{
protected set
{
if (_vrn != value)
{
_vrn = value;
OnPropertyChanged("VRN");
}
}
get { return _vrn ; }
}
string _make= "";
public string Make
{
protected set
{
if (_make!= value)
{
_make= value;
OnPropertyChanged("Make");
}
}
get { return _make; }
}
string _model = "";
public string Model
{
protected set
{
if (_model != value)
{
_model = value;
OnPropertyChanged("Model");
}
}
get { return _model ; }
}
hubConnection.On<string>("NewItem", (item) =>
{
MainThread.BeginInvokeOnMainThread(async () =>
{
Item newItem = JsonConvert.DeserializeObject<Item>(item);
VRN= newItem.VRN;
Make= newItem.Make;
Model= newItem.Model;
}
}
以上代码将使用插入的最后一项的值设置标签。到这里就完成了。
每当将新项目添加到 Item ObservableCollection(我正在使用 SignalR 插入数据)时,我想为 3 个标签设置动画(闪烁)20 秒
我已经有一个类,我将它与 CollectionView 一起用于另一个场景。有什么方法可以使用下面的类为标签设置动画还是有其他简单的方法?
public class BlinkTriggerAction : TriggerAction<VisualElement>
{
protected async override void Invoke(VisualElement sender)
{
var parentAnimation = new Animation();
var fadeOutAnimation = new Animation(d => sender.Opacity = d, 1, 0, Easing.Linear);
var fadeInAnimation = new Animation(d => sender.Opacity = d, 0, 1, Easing.Linear);
parentAnimation.Add(0, 0.5, fadeOutAnimation);
parentAnimation.Add(0.5, 1, fadeInAnimation);
parentAnimation.Add(0, 0.5, fadeOutAnimation);
parentAnimation.Add(0.5, 1, fadeInAnimation);
parentAnimation.Add(0, 0.5, fadeOutAnimation);
parentAnimation.Add(0.5, 1, fadeInAnimation);
parentAnimation.Add(0, 0.5, fadeOutAnimation);
parentAnimation.Add(0.5, 1, fadeInAnimation);
parentAnimation.Commit(sender, "BlinkingVisualElement", 16, 800, repeat: () => true);
await Task.Delay(20000);
parentAnimation.Add(0, 0.5, fadeOutAnimation);
parentAnimation.Add(0.5, 1, fadeInAnimation);
sender.AbortAnimation("BlinkingVisualElement");
}
}
【问题讨论】:
-
如果您正在寻找的是同一动画的可重用性,我建议使用行为而不是触发器。您可以创建样式化行为,并且任何元素都可以使用该样式为您的 VisualElement 设置动画。
-
您可以使用我的代码发布示例代码吗?
-
查看我发布的答案,希望它能解决您的问题
标签: xamarin xamarin.forms xamarin.android