这是场景:
我有以下用户控件,想法是它的视图模型应该能够向视图发出信号,它需要"激活发光",从而播放故事板.
<UserControl x:Class="View.UnitView" ... >
...
<Storyboard x:Key="ActivateGlow">
...
</Storyboard>
...
<!-- INVALID BINDING! Not Dependancy Object-->
<EventTrigger RoutedEvent="{Binding OnActivateGlow}">
<BeginStoryboard Storyboard="{StaticResource ActivateGlow}"/>
</EventTrigger>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
在UnitView的代码隐藏中,我有:
public event EventHandler ActivateGlow;
Run Code Online (Sandbox Code Playgroud)
并且在MVVM中非常正常,我为UnitViewModel提供了以下DataTemplate:
<DataTemplate DataType="{x:Type vm:UnitViewModel}">
<vw:UnitView d:DesignWidth="150" d:DesignHeight="100" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
最后一个问题是,我如何设置一些东西,以便viewmodel可以触发OnActivateGlow事件?
我正在使用带有MVVM模式的ScrollViewer,并且ScrollViewer包含了一个项目列表,例如
<ScrollViewer>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn
Header = "Name"
DisplayMemberBinding="{Binding Path=Name}"
/>
</GridView>
</ListView.View>
</ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
列表视图的项目绑定到viewmodel中的对象集合.我希望每当从集合中添加或删除项目时,scrollviewer都会滚动到顶部.
我需要viewmodel来触发事件,而不是ScrollToTop()在视图的代码隐藏中使用该方法.