2013-04-04 65 views
0

Blacklight是一组较旧的WPF控件和样式。代码可以在here找到。它包含一个名为AnimatedExpander控制这是不是一个真正的扩展,而它只是实现HeaderedContentControl并增加了一个IsExpandedProperty dprop:无法绑定到扩展器上的IsExpanded

public static readonly DependencyProperty IsExpandedProperty = 
     DependencyProperty.Register("IsExpanded", typeof(bool), typeof(AnimatedExpander), new PropertyMetadata(true)); 

    public bool IsExpanded 
    { 
     get 
     { 
      if (this.expandToggleButton != null) 
      { 
       return this.expandToggleButton.IsChecked.Value; 
      } 

      return (bool)GetValue(IsExpandedProperty); 
     } 

     set 
     { 
      SetValue(IsExpandedProperty, value); 
     } 
    } 

我需要绑定为isExpanded让我能坚持扩展是否扩大。我很确定我的绑定安装正确,并且这个自定义依赖属性有问题。如果我在Snoop中打开视图,并在扩展器上设置IsExpanded = True,则绑定起作用。但是,只需单击控件上的expandToggleButton就可以扩展控件,但它不会打到我的绑定。

<controls:AnimatedExpander IsExpanded="{Binding SGGExpanderExpanded}" /> 

    private bool _sGGExpanderExpanded; 
    public bool SGGExpanderExpanded 
    { 
     get { return _sGGExpanderExpanded; } 
     set 
     { 
      if (_sGGExpanderExpanded != value) 
      { 
       _sGGExpanderExpanded = value; 
       OnPropertyChanged("SGGExpanderExpanded"); 
      } 
     } 
    } 

如何绑定到当用户单击有线扩展控件的切换按钮时更改的值?

+0

发布该控件的完整代码和XAML。 – 2013-04-04 17:12:25

+0

感谢您的关注。代码在链接处可用,并且可以通过简单地将示例AnimatedExpanders中的一个绑定到虚拟视图模型来进行测试。 由于我提到的工作不好,我不能浪费大量时间寻找一个好的解决方案。我会尽量在周末回来寻找一个纯粹的MVVM解决方案。 – JoeB 2013-04-04 18:10:12

+0

没错。我几乎可以肯定,你遇到的问题是由于该控件的不好实现。 – 2013-04-04 18:14:37

回答

0

一个坏的解决方案:

我能够通过一个事件连接到切换按钮点击并查看“发件人”的内容,使这项工作和值器isChecked更新我的视图模型。