【问题标题】:How can I convert a control that is already bound to multibinding如何转换已经绑定到多重绑定的控件
【发布时间】:2013-04-18 09:03:14
【问题描述】:

假设我有一个已绑定到 XAML 中的转换器的 FrameworkElement。以编程方式,我希望在运行时将绑定附加到现有绑定 - 例如在控件的加载事件中,有效地使其成为多重绑定。

如何获取(例如)Visibility 属性上的现有绑定。

【问题讨论】:

  • 您可以尝试BindingOperations.GetBinding 获取现有绑定。
  • 创建一个具有单个bool 属性的正确视图模型,以将Visibility 绑定到并根据其中定义的逻辑操作该属性。
  • @HighCore - 不幸的是,我无法控制大部分应用程序的开发方式,而且大部分应用程序没有使用 MVVM 方法,可悲的是:( - 我很乐意,但它以这种方式重新设计它会花费太多的精力。唯一可行的方法是修改我的基本控件以附加到每个控件的加载事件中的现有绑定。

标签: wpf binding multibinding


【解决方案1】:

你可以这样做:

var oldBinding = BindingOperations.GetBinding(element, UIElement.VisibilityProperty);

var newBinding = new MultiBinding { Converter = ... };

var firstBinding = new Binding
{
    Path = oldBinding.Path,
    Source = oldBinding.Source // or RelativeSource or ElementName
};

var secondBinding = new Binding
{
    ...
};

newBinding.Bindings.Add(firstBinding);
newBinding.Bindings.Add(secondBinding);

BindingOperations.SetBinding(element, UIElement.VisibilityProperty, newBinding);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多