有没有办法将命令绑定到树景中所有TreeViewItems的崩溃事件中?
-
01-10-2019 - |
题
我正在尝试做类似于该人的事情 这 问题想做。
有没有 任何, ,更优雅,做到这一点的方法比在那里的工作建议?
(作为最后的手段)是否有不同的MVVM框架可以更好地支持这样做?
现在,我正在尝试制作从TreeView继承的自定义控件,例如:
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
:“调度员处理已被暂停,但仍在处理消息。”
有任何想法吗?
解决方案
我尚未使用您引用的链接中描述的“ eventtocommand”类。但是请尝试本文中的一篇: http://sachabarber.net/?p=514. 。我刚刚在该帖子中使用CommandBehavior类写了一个小示例,我能够将命令附加到TreeViewItem的ISCollapsed事件上,并使用以下XAML:
<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>
不隶属于 StackOverflow