C# 如何从源属性绑定到目标方法

C# 如何从源属性绑定到目标方法,c#,.net,wpf,data-binding,C#,.net,Wpf,Data Binding,有很多方法可以通过ValueConverter或ObjectDataProvider将源方法绑定到目标属性。但是,如果我想让绑定影响目标方法,该怎么办 考虑以下示例: class ListBoxViewModel { public static readonly DependencyProperty CurrentItemProperty = DependencyProperty.Register("CurrentItem", typeof (object), typeof (L

有很多方法可以通过ValueConverter或ObjectDataProvider将源方法绑定到目标属性。但是,如果我想让绑定影响目标方法,该怎么办

考虑以下示例:

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绑定到
列表框
。但是,因为CollectionView的属性是只读的,所以我不能直接绑定到它。相反,我必须执行函数。我怎么做

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


谢谢

您可以使用属性更改回调注册您的属性,然后可以在该回调中手动更新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
}

那是个好主意!自定义附加属性真是太棒了!