我正在按照MVVM模式制作WPF应用程序。我有一个按钮和文本块。 TextBlock仅在其文本不为空时显示。在应用程序启动时,文本为空,不显示文本块。当我单击按钮时,将设置示例文本并显示文本块。当我再次点击时,按钮文本设置为空,文本块隐藏。
现在我想要的是,当设置文本时,开始动画(渐变)不透明度在5秒内从0变为1。
这是我的XAML
<TextBlock Text="{Binding StatusMessage}" Visibility="{Binding IsStatusMessageVisible}" />
<Button Content="UpdateText" Command="{Binding UpdateTextCommand}" />
这是我的ViewModel。
private string _statusMessage;
public string StatusMessage
{
get { return _statusMessage ?? (_statusMessage = string.Empty); }
set
{
_statusMessage = value;
NotifyOfPropertyChange(() => IsStatusMessageVisible);
NotifyOfPropertyChange(() => StatusMessage);
}
}
public System.Windows.Visibility IsStatusMessageVisible
{
get
{
return (string.IsNullOrEmpty(StatusMessage))
? System.Windows.Visibility.Collapsed
: System.Windows.Visibility.Visible;
}
}
public void UpdateText()
{
if (string.IsNullOrEmpty(StatusMessage))
StatusMessage = Properties.Resources.WaitMessageStatus;
else
StatusMessage = string.empty;
}
我只想在设置StatusMessage文本时动画运行。
答案 0 :(得分:0)
请按照以下步骤操作:
答案 1 :(得分:0)
首先,摆脱你的viewmodel上的“Visibility”属性,它不属于那个......它应该是一个布尔值。然后,为TextBlock
创建一个样式。在该样式中,添加DataTrigger
以绑定到布尔“IsVisible”属性。 DataTrigger
的新闻,创建一个故事板:
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<!--Animation code in here />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
有关如何进行不透明度动画的示例,只需谷歌...但这里是one way