【问题标题】:Bind events to properties and vice-versa in WPF在 WPF 中将事件绑定到属性,反之亦然
【发布时间】:2012-05-03 23:26:04
【问题描述】:

我对绑定和 WPF 比较陌生,但我已经能够用绑定做一些有趣的事情(至少对我来说很有趣)

有谁知道是否可以将事件(例如 SelectionChanged o Click 事件等)绑定到属性(例如:IsChecked、IsEnabled 等)?

我知道我可以将属性与 Path 属性和所有属性绑定。

【问题讨论】:

    标签: c# wpf binding


    【解决方案1】:

    如果您想将事件绑定到命令,您可以通过附加行为来完成。看看this blog 以了解如何使用 MVVM Light 做到这一点。绑定到IsEnabled 没有多大意义

    他们给出的一个例子是:

    <Button>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click" >
                <i:InvokeCommandAction Command="{Binding FooCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    

    在视图模型中

    public MyViewModel()
    {
        //set it as a toggle for example
        FooCommand = new RelayCommand( () => IsChecked = !IsChecked );
     }    
    
    public ICommand FooCommand { get; private set; }
    
    public bool  IsChecked
    {
       get { return _isChecked; }
       set { _isChecked = value;
            RaisePropertyChanged("IsChecked"); }
    }
    

    【讨论】:

    • 我知道绑定到 IsEnabled 没有意义,但我提供了一个示例。所以这将允许我将事件绑定到命令。我明天试试,然后我会回复。有没有办法让我使用转换器或任何其他绑定属性?抱歉有这么多问题,但绑定非常有趣,但相当混乱
    • WPF 中的绑定太棒了...您绑定到命令的原因是隐喻是相同的。您可以在命令实现中设置另一个属性值。我会更新答案
    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2012-05-15
    • 2011-09-03
    • 2014-11-08
    相关资源
    最近更新 更多