0

SimpleMDI Caliburn Micro プロジェクトで見られるように、tabControls の selectionEvent を Conductor の ActivateItem にバインドするいくつかの規則があります。このイベントが何であるかについての言及はまったく見当たりません。

ただし、これらの規則を満たさないコントロールがある場合、自分でそれらを管理する方法がわかりません。

ノードの子を (WCF 呼び出しを介して) オンデマンドでロードできるように、コンダクターで管理したい Telerik RadTreeView があります。

これが私がいる場所です:

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

$dataContext を渡すのは間違っています。なぜなら、彼が Conductor 自体を渡す方法では、$SelectedItem が null を返すからです。

ですから、私のかなり単純な質問は 3 つあります。

1) RadTreeView がセレクターである場合、なぜ基本的な CM 規約がそれで機能しないのか、

2) ActiveItem を呼び出すためにどのイベントを使用する必要がありますか

3) 何を渡すことができますか。

4

1 に答える 1

1

これは、ツリービューと mvvm を実行するためのさまざまなアプローチを理解するのに役立つ場合があります。

私は RadTreeView も使用していましたが、最終的に のItemsコレクションをホストする ViewModel にイベントを送信しましたTreeViewItemViewModel。編集などのアクション/イベントが MainViewModel に送信されたとき、次のようなメソッドがありました。

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

            treeViewItemViewModel.EndEdit();
        }

したがって、これはツリーのどのレベルでも機能し、さまざまな動作を行うためにも機能し、さまざまなもののインターフェイスが実装されているかどうかを確認しました。

RadTreeView の xaml

 <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)]"/>
于 2012-07-09T18:58:09.847 に答える