【发布时间】:2021-05-14 09:00:09
【问题描述】:
我开发了一个可以播放音频流源的 Xamarin.Forms 应用。
为此,我在屏幕底部显示了一个小“栏”。该栏包含:
- 一个“播放”/“停止”
Button -
Label,名称为当前标题 - “关闭”
Button
我想在 短时间内显示错误消息而不是当前标题,当错误发生时(例如无法访问互联网或 URL 无法访问) ),在两种Labels 之间有一个小动画/过渡。
为此,我在 ViewModel 中有一个 HasError 属性:
bool hasError = false;
public bool HasError
{
get { return hasError; }
set { SetProperty(ref hasError, value); }
}
我想通过Triggers 管理这个。
我可以这样做:
<Label x:Name="RadioName"
Text="{Binding CurrentTitle}"
Style="{StaticResource RadioLabelStyle}"
Grid.Column="1">
<Label.Triggers>
<DataTrigger Binding="{Binding HasError}" Value="false" TargetType="Label">
<Setter Property="IsVisible" Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding HasError}" Value="true" TargetType="Label">
<Setter Property="IsVisible" Value="False" />
</DataTrigger>
</Label.Triggers>
</Label>
<Label x:Name="RadioError"
Text="{x:Static strings:Strings.RadioErrorAccessMessage}"
Style="{StaticResource ErrorRadioLabelStyle}"
Grid.Column="1">
<Label.Triggers>
<DataTrigger Binding="{Binding HasError}" Value="false" TargetType="Label">
<Setter Property="IsVisible" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding HasError}" Value="true" TargetType="Label">
<Setter Property="IsVisible" Value="True" />
</DataTrigger>
</Label.Triggers>
</Label>
这很好用,但在这种情况下,我没有任何时间限制或任何过渡/动画。
是否可以添加时间限制和过渡/动画?
【问题讨论】:
-
这个案例有什么更新吗?
-
@WendyZang-MSFT 我相信我的解决方案回答了原始问题等等,但不幸的是,OP 不断更改问题的条款/条件,我稍后会尝试看看,您能否确认它是否有效?
-
给定的解决方案适用于
ConnectionStatus问题。但是,管理在 VM 中管理的其他错误(如 URL 不可达)似乎不是更好的方法,因为这需要在 View 的代码隐藏中引用 VM 的某些属性......所以我终于使用了VM 中的 ShowError 属性触发错误的显示,而不使用Triggers更长的时间。
标签: c# xaml xamarin.forms triggers datatrigger