【问题标题】:Is there a way to bind a command to the collapsed event of all TreeViewItems in a treeview?有没有办法将命令绑定到树视图中所有 TreeViewItems 的折叠事件?
【发布时间】:2010-08-29 01:13:23
【问题描述】:

我正在尝试做类似于this 问题中的人想要做的事情。

是否有任何比那里建议的解决方法更优雅的方法来做到这一点?

(作为最后的手段)是否有不同的 mvvm 框架可以更好地支持这样做?

现在我正在尝试制作一个继承自树视图的自定义控件,如下所示:

public ModdedTreeView()
    {
        this.AddHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));
    }

public RelayCommand<RoutedEventArgs> ItemCollapsedCommand
    {
        get { return (RelayCommand<RoutedEventArgs>)GetValue(ItemCollapsedCommandProperty); }
        set { SetValue(ItemCollapsedCommandProperty, value); }
    }

    // Using a DependencyProperty as the backing store for ItemCollapsedCommand.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty ItemCollapsedCommandProperty =
        DependencyProperty.Register("ItemCollapsedCommand", typeof(RelayCommand<RoutedEventArgs>), typeof(ModdedTreeView), new UIPropertyMetadata(null));

protected void ItemCollapsed(object sender, RoutedEventArgs e)
    {
        if (ItemCollapsedCommand != null)
            ItemCollapsedCommand.Execute(e);
    }

然后我会将我想要触发的命令绑定到 ItemCollapsedCommand 依赖属性。然而,即使这样也行不通。

我不断收到InvalidOperationException: “调度程序处理已暂停,但仍在处理消息。”

有什么想法吗?

【问题讨论】:

    标签: c# wpf mvvm-light treeviewitem


    【解决方案1】:

    我没有使用您引用的链接中描述的“EventToCommand”类。但试试这篇文章中的那个:http://sachabarber.net/?p=514。我刚刚使用该帖子中的 CommandBehavior 类编写了一个小示例,并且能够使用以下 XAML 将命令附加到 TreeViewItem 的 IsCollapsed 事件:

    <TreeView>
        <TreeView.ItemContainerStyle>
            <Style TargetType="TreeViewItem">
                <Setter Property="local:CommandBehavior.TheCommandToRun" Value="{Binding MyCommand}"/>
                <Setter Property="local:CommandBehavior.RoutedEventName" Value="Collapsed"/>
            </Style>
        </TreeView.ItemContainerStyle>
    
        <TreeViewItem Header="Item">
            <TreeViewItem Header="Item">
                <TreeViewItem Header="Item"/>
            </TreeViewItem>
        </TreeViewItem>
    </TreeView>
    

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 1970-01-01
      • 2010-12-16
      • 2016-11-26
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多