WPF如何后台改变动画触发器绑定值
一个播放器按钮,播放和暂停是同一个按钮但是xaml实在是不方便啊部分xaml代码如下:<Storyboardx:Key="Board"CurrentTimeInvalid...
一个播放器按钮,播放和暂停是同一个按钮
但是xaml实在是不方便啊
部分xaml代码如下:
<Storyboard x:Key="Board" CurrentTimeInvalidated="Storyboard_CurrentTimeInvalidated" SlipBehavior="Slip">
<MediaTimeline Source="xx.mp3" Storyboard.TargetName="media" x:Name="mediaTime"></MediaTimeline>
</Storyboard>
<Window.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="按钮名">
<EventTrigger.Actions>
<BeginStoryboard Name="mediaStoryBoard" Storyboard="{StaticResource Board}" ></BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Window.Triggers>
可以看到触发器与按钮的Click事件绑定了,两个按钮自然什么事都没有,纯xaml都能搞定,但是我如何根据这一个按钮的状态来判断何时为暂停,何时继续呢?麻烦高手给出后台代码,或者有其他的好办法也行。谢谢!
暂停和继续的问题解决了,但是该播放器在打开时我不想让它自动播放mp3,仍想通过该按钮点击实现,问题出现了,ToggleButton和动画的绑定事件只有Checked和UnChecked,但是最开始的播放等同于重新播放,而不是播放或暂停这两个状态,也就是说有3个状态,这样一来就不行了,还有就是感觉绑定事件不太灵活啊,能否绑定属性啊,或者如何自定义事件 展开
但是xaml实在是不方便啊
部分xaml代码如下:
<Storyboard x:Key="Board" CurrentTimeInvalidated="Storyboard_CurrentTimeInvalidated" SlipBehavior="Slip">
<MediaTimeline Source="xx.mp3" Storyboard.TargetName="media" x:Name="mediaTime"></MediaTimeline>
</Storyboard>
<Window.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="按钮名">
<EventTrigger.Actions>
<BeginStoryboard Name="mediaStoryBoard" Storyboard="{StaticResource Board}" ></BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Window.Triggers>
可以看到触发器与按钮的Click事件绑定了,两个按钮自然什么事都没有,纯xaml都能搞定,但是我如何根据这一个按钮的状态来判断何时为暂停,何时继续呢?麻烦高手给出后台代码,或者有其他的好办法也行。谢谢!
暂停和继续的问题解决了,但是该播放器在打开时我不想让它自动播放mp3,仍想通过该按钮点击实现,问题出现了,ToggleButton和动画的绑定事件只有Checked和UnChecked,但是最开始的播放等同于重新播放,而不是播放或暂停这两个状态,也就是说有3个状态,这样一来就不行了,还有就是感觉绑定事件不太灵活啊,能否绑定属性啊,或者如何自定义事件 展开
3个回答
展开全部
EventTrigger 的 Actions 不是 Action, Actions 可支援多个 Action
ToggleButton 在 Loaded 事件先 BeginStoryboard 然后立即暂停
RoutedEvent="ToggleButton.Loaded // 预播放, 立即暂停
<BeginStoryboard ... ...// 就是想得到一个名字
<PauseStoryboard ...
RoutedEvent="ToggleButton.Checked // 继续播放
<ResumeStoryboard ...
RoutedEvent="ToggleButton.Unchecked // 暂停
<PauseStoryboard...
-------------------------------
另外, ToggleButton 支持 3 态 (通过 IsThreeState 设定): Checked/Unchecked/Indeterminate
其 IsChecked 属性对应值是 True/False/Null, 此属性类型为 bool?
所以还有一个事件: ToggleButton.Indeterminate
ToggleButton 在 Loaded 事件先 BeginStoryboard 然后立即暂停
RoutedEvent="ToggleButton.Loaded // 预播放, 立即暂停
<BeginStoryboard ... ...// 就是想得到一个名字
<PauseStoryboard ...
RoutedEvent="ToggleButton.Checked // 继续播放
<ResumeStoryboard ...
RoutedEvent="ToggleButton.Unchecked // 暂停
<PauseStoryboard...
-------------------------------
另外, ToggleButton 支持 3 态 (通过 IsThreeState 设定): Checked/Unchecked/Indeterminate
其 IsChecked 属性对应值是 True/False/Null, 此属性类型为 bool?
所以还有一个事件: ToggleButton.Indeterminate
展开全部
最简单的办法,你用换用ToggleButton,写两个Trigger,Event分别为Checked和Unchecked
然后改改样式,看上去是播放和暂停即可。无需写cs代码
然后改改样式,看上去是播放和暂停即可。无需写cs代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以尝试 使用MEDIAELEMENT 控件来 播放MP3 文件 你在界面上画一个MEDIAELEMENT放在最底层 OPACITY设置为0 之后NAME属性设置为mediaelement1
在TOGGLEBUTTON 的 CHECKED事件里写{this.mediaelement1.Play();}UNCHECKED事件里写{this.mediaelement1.Pause();} 这样CHECKED 的时候播放 UNCHECKED的时候 暂停 而且再次点击 的时候可以继续播放
在TOGGLEBUTTON 的 CHECKED事件里写{this.mediaelement1.Play();}UNCHECKED事件里写{this.mediaelement1.Pause();} 这样CHECKED 的时候播放 UNCHECKED的时候 暂停 而且再次点击 的时候可以继续播放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询