0

Blacklight は、WPF コントロールとスタイルの古いセットです。コードはここにあります。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");
            }
        }
    }

コントロールを展開するために配線されているトグル ボタンをユーザーがクリックしたときに変化する値にバインドするにはどうすればよいですか?

4

1 に答える 1

0

悪い解決策:

ToggleButton のクリックにイベントをアタッチし、「送信者」の Content 値と IsChecked 値を調べてビューモデルを更新することで、これを機能させることができました。

于 2013-04-04T18:04:42.937 に答える