如何从源属性绑定到TARGET方法

时间:2011-02-08 13:55:51

标签: c# .net wpf data-binding

有很多方法可以通过ValueConverter或ObjectDataProvider将SOURCE方法绑定到目标属性。但是,如果我想让绑定影响目标方法呢?

考虑以下示例:

class ListBoxViewModel
{
        public static readonly DependencyProperty CurrentItemProperty = DependencyProperty.Register("CurrentItem", typeof (object), typeof (ListBoxViewModel));

        public object CurrentItem
        {
            get { return (object) GetValue(CurrentItemProperty); }
            set { SetValue(CurrentItemProperty, value); }
        }   
}

我想将属性CurrentItem绑定到ListBox的{​​{3}}。但是,由于CollectionView的CollectionView属性是只读的,我无法直接绑定它。相反,我必须执行CurrentItem功能。我该怎么办?

如果有不同的方法做到这一点 - 没有绑定到方法,我也喜欢听它,但是,主要问题是如何绑定到方法,如果不是在这种情况下,然后在类似的。如果不可能,最好的选择是什么?例如,我想到的一个想法是订阅依赖属性的更改通知(在本例中为CurrentItem)并运行该函数的过程代码。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用属性更改回调注册您的属性,然后您可以手动更新CollectionView:

public static readonly DependencyProperty CurrentItemProperty =
    DependencyProperty.Register
    (
        "CurrentItem",
        typeof(object),
        typeof(ListBoxViewModel),
        new UIPropertyMetadata(null, CurrentItemChanged)
    );
public object CurrentItem
{
    get { return (object)GetValue(CurrentItemProperty); }
    set { SetValue(CurrentItemProperty, value); }
}

private static void CurrentItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    // Update current item logic
}