【问题标题】:Event binding to ViewModel events in XAML事件绑定到 XAML 中的 ViewModel 事件
【发布时间】:2013-02-11 11:36:02
【问题描述】:

WPF 新手在这里。假设我的 ViewModel 类有一个事件SomethingHappened 定义为:

Public Event SomethingHappened(message As String)

我的视图中有一个本地资源定义为:

<local:MsgWindow x:Key="MsgWindow" Visibility="Hidden" >

ViewModel 被分配为视图的DataContext。如何在 SomethingHappended 上将 MsgWindow 的 Visibility 更改为 Visible

【问题讨论】:

    标签: wpf vb.net xaml events binding


    【解决方案1】:

    我将在您的视图模型中定义一个 bool 属性,创建 BoolToVisibilityConverter(实现 IValueConverter),并使用转换器将 XAML 中的 Visibility 属性绑定到您的模型的属性。不要引发事件,而是设置您的属性(确保您的属性从 INotifyPropertyChanged 引发 PropertyChanged 或者是依赖属性)。

    【讨论】:

    • 是的,没错,但我更感兴趣的是找到事件绑定的 XAML 方式,而不是解决手头问题的特定实例。
    • 啊;那么你可以尝试一个事件触发器
    【解决方案2】:

    在资源中声明:

    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    

    然后在你的视图模型中声明:

    public bool Visible { get; set; }
    

    然后,使用转换器将您的组件绑定到此属性

    <local:MsgWindow x:Key="MsgWindow" Visibility="{Binding Visible, Converter={StaticResource BooleanToVisibilityConverter}}" >
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2020-12-24
      • 2011-12-17
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2011-12-14
      • 2018-11-09
      • 2011-10-31
      相关资源
      最近更新 更多