无法绑定到Expander上的IsExpanded

时间:2013-04-04 15:59:39

标签: wpf binding controls expander blacklight

Blacklight是一组较旧的WPF控件和样式。代码可以找到here。它包含一个名为AnimatedExpander的控件,它实际上不是一个扩展器,而只是实现了HeaderedContentControl并添加了一个IsExpandedProperty dprop:

    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");
            }
        }
    }

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

1 个答案:

答案 0 :(得分:0)

一个糟糕的解决方案:

我能够通过将事件附加到ToggleButton点击并查看“sender”内容和IsChecked值来更新我的viewmodel来完成这项工作。