有很多方法可以通过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)并运行该函数的过程代码。
谢谢!
答案 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
}