【发布时间】:2017-03-20 22:55:30
【问题描述】:
我正在使用 MVVM,并且我的 MainWindow 具有以下属性绑定:
<ContentControl x:Name="MainContentControl" Content="{Binding CurrentPage}" Margin="10,50,10,38"/>
单击按钮时,我将 CurrentPage 设置为新的视图绑定,它上面有一个 ProgressCarControl:
private void HomeButtonClick(object obj)
{
CurrentPage = new HomeViewModel();
}
<ProgressBar Cursor="Hand"
Name="EffortProgressBar" Value="{Binding Home.Effort, Mode=TwoWay}" Foreground="{Binding RelativeSource={RelativeSource Mode=Self},
Path=Value, Converter={StaticResource ProgressForegroundConverter}}"
Height="12" Canvas.Left="30" Canvas.Top="75" Width="25" RenderTransformOrigin="0.5,0.5">
<ProgressBar.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</ProgressBar.RenderTransform>
<ProgressBar.Triggers>
<EventTrigger RoutedEvent="ProgressBar.Loaded">
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Value" From="0" To="{Binding Home.Effort, Mode=TwoWay}" Duration="0:0:01"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ProgressBar.Triggers>
</ProgressBar>
当我单击主页按钮加载页面时,ProgressBar 动画正确,但是当我再次单击该按钮时,ProgressBar 没有动画。
是否有不同的事件可以订阅来实现这一点?或者这不可能?
【问题讨论】:
-
因为它已经被加载,所以它没有动画。尝试用任何其他事件替换
-
为什么不在按钮点击事件上触发动画呢?毕竟,这就是你真正想要的,不是吗?你的问题不是很清楚。它缺少minimal reproducible example,以及有助于我们了解您尝试过的内容以及具体遇到问题的详细信息。
-
@PeterDuniho 我无法在单击按钮时执行此操作,因为我无法访问 ViewModel 上的控件。
-
视图模型与它有什么关系?只需将事件触发器放在 XAML 中。如果您仍然需要帮助,请解决您的问题。提供一个好的minimal reproducible example,并准确解释您需要什么。请参阅How to Ask,尤其是该页面底部链接的文章。