3

나는 계층 적 컬렉션이 있으며 크기 때문에 가장 낮은 레벨을 게으른로드합니다.컨트롤을 건너 뛰는 Caliburn.Micro 메시지 버블 링

활성화하려고하는 동작은 CollectionHolderManager에 있지만 버블 링이 어떤 이유로 시각적 레이어를 건너 뛴 것으로 보입니다. 나는 TopLevelCollection에 작업이있는 경우

<ItemsControl DataContext="{Binding Path=CollectionHolderManager}" 
         ItemsSource="{Binding Path=CollectionTopLevel}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <telerik:RadToolBar cal:Bind.Model="{Binding}"> 

       <TextBlock x:Name="Name" /> 

       <ItemsControl ItemsSource="{Binding Path=CollectionMiddleLevel}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 

          <telerik:RadDropDownButton cal:Bind.Model="{Binding}" 
                   Content="{Binding Path=Name}" 
                   cal:Message.Attach="[Event DropDownOpened] = [Action GetLowestLevel($dataContext)]"> 
           <telerik:RadDropDownButton.DropDownContent> 
            <telerik:RadListBox SelectionMode="Multiple" 
                   ItemsSource="{Binding Path=CollectionLowestLevel}"> 
             <telerik:RadListBox.ItemTemplate> 
              <DataTemplate> 

               <!-- some template --> 

              </DataTemplate> 
             </telerik:RadListBox.ItemTemplate> 

            </telerik:RadListBox> 
           </telerik:RadDropDownButton.DropDownContent> 
          </telerik:RadDropDownButton> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </telerik:RadToolBar> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

그래서 호출의 수.

CollectionHolderManager를 소유 한 ViewModel에 가져온 경우이 컬렉션이 호출되지만 CollectionHodlerManager 자체에있을 때는 그렇지 않습니다. 왜 그걸 건너 뛰는거야?

답변

4

내가 그걸 놓쳤다 고 나는 믿을 수 없다.

<ItemsControl cal:Bind.Model="{Binding Path=CollectionHolderManager}" 
       ItemsSource="{Binding Path=CollectionTopLevel}"> 

DataContext 대신 Bind.Model.