我在我的MainWindow中有一个如下所示的UserControl:
<ctrls:Login Visibility="{Binding DataContext.Vis,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=Window}},
Converter={StaticResource BooelanToVisibilityConverter}"/>
所以它的可见性与MainWindow的ViewModel中的属性Vis绑定。
我想知道的是,在UserControl的ViewModel中如何捕获可见性已更改的信号?当可见时,我希望开始一个计时器,并在隐藏时停止它。
e.NewValue
是一个布尔类型,而不是Visibility
类型。你的代码应该显示if ((bool)e.NewValue) { // IsVisible code here} ...
- evanbMicrosoft.Expression.Interactivity.Core
的 dll 才能使用它。可以参考这里的示例(http://coreclr.wordpress.com/2011/01/05/using-interaction-triggers-in-mvvm/)和这里的示例(http://www.danharman.net/2011/08/05/binding-wpf-events-to-mvvm-viewmodel-commands/),或者直接在谷歌上搜索 interaction triggers MVVM,会有很多相关的参考资料。 - Rohit Vats