卡利本微:如何将激活项绑定到选择导体中的事件



正如在 SimpleMDI Caliburn Micro 项目中所看到的,有一些约定将 tabControls 中的 selectionEvent 绑定到 Conductor 中的 ActivateItem。我真的看不到任何关于这个事件可能是什么的提及。

但是,当您的控件不能满足这些约定时,我就不知道如何自己管理它们了。

我有一个Telerik RadTreeView,我想用导体进行管理,以便能够按需加载节点的子节点(通过WCF调用)。

这是我所在的地方:

<telerik:RadTreeView x:Name="Items"
                     cal:Message.Attach="[Event Selected] = [ActivateItem($dataContext)]"  />

传递$dataContext是错误的,因为这样他就会传递导体本身,$SelectedItem返回 null。

所以我相当简单的问题是三重的。

1)如果RadTreeView是一个Selecetor,为什么基本的CM约定不能与它一起使用,

2) 我应该使用什么事件来调用活动项

3)我可以传递什么。

这可能有助于理解执行树视图和 mvvm 的不同方法。

我也在使用RadTreeView,最终我将事件发送到托管Items TreeViewItemViewModel集合的ViewModel。 当一个动作/事件(例如编辑)被发送到 MainViewModel 时,我有一个这样的方法:

 public void Edited(object sender, RadTreeViewItemEditedEventArgs e)
        {
            var treeViewItemViewModel = e.NewValue as IEditable;
            if (treeViewItemViewModel == null) return;
            treeViewItemViewModel.EndEdit();
        }

因此,这适用于树中的任何级别,也适用于具有不同的行为,检查是否实现了不同事物的接口。

xaml for the RadTreeView

 <telerik:RadTreeView x:Name="MyTree"
                                     Grid.Row="1"
                                     Margin="0,20,0,0"
                                     VerticalAlignment="Stretch"
                                     FontSize="16"
                                     FontFamily="{StaticResource MainFontFamily}"
                                     ItemsSource="{Binding Children, Mode=TwoWay}"
                                     ItemTemplate="{StaticResource HierarchicalDataTemplate}"
                                     ItemEditTemplateSelector="{StaticResource ItemEditTemplateSelector}"
                                     ItemEditTemplate="{x:Null}"
                                     IsLoadOnDemandEnabled="True"
                                     IsEditable="True"
                                     IsDragDropEnabled="True"
                                     DropExpandDelay="00:00:01"
                                     telerik:TextSearch.TextPath="ItemId"
                                     PathSeparator="|"
                                     cal:Message.Attach="
                                    [Event LoadOnDemand] = [Action LoadOnDemand($eventArgs)];
                                    [Event PreviewDragStarted] = [Action PreviewDragStarted($source,$eventArgs)];
                                    [Event PreviewDragEnded] = [Action PreviewDragEnded($source,$eventArgs)];
                                    [Event DragEnded] = [Action DragEnded($source,$eventArgs)];
                                    [Event Edited] = [Action Edited($source,$eventArgs)];
                                    [Event EditCanceled] = [Action EditCanceled($source,$eventArgs)]"/>

相关内容

  • 没有找到相关文章

最新更新