0

左の矢印をクリックする代わりに、テキストをクリックするだけでTreeViewのグループを展開/折りたたみできるようにするにはどうすればよいですか。

4

1 に答える 1

1

次のセッターでツリーアイテムのスタイルを作成する必要があります。

        <Style x:Key="TreeItemStyle"
               TargetType="{x:Type TreeViewItem}">                
            <Setter Property="IsExpanded"
                    Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
        </Style>

次に、IsExpandedという名前のグループビューデータクラスの監視可能なプロパティを追加します。

    private bool _isExpanded;

    public bool IsExpanded
    {
        get
        {
            return this._isExpanded;
        }
        set
        {
            if (this._isExpanded != value)
            {
                this._isExpanded = value;
                this.OnPropertyChanged("IsExpanded");
            }
        }
    }

次に、ハイパーリンククリックイベントをインターセプトし、IsExpandedをtrueに設定します。

    private void Hyperlink_Click(object sender, RoutedEventArgs e)
    {
        var dc = ((Hyperlink)sender).DataContext;
        if (dc is GroupViewData)
        {
            ((GroupViewData)dc).IsExpanded = true;
        }
    }

もちろん、クリックハンドラーの代わりにコマンドを使用するのが最善の方法ですが、プレゼンテーションモデルの構成がわからないため、適切なソリューションを提供できません。同様の要件を持つプロジェクトでは、ビューコードの背後を回避することに成功していると言わざるを得ません。神はWPFを祝福します!

于 2011-01-21T16:03:50.510 に答える