2014-04-17 3 views
1

WinRT 응용 프로그램에 Caliburn.Micro를 사용하여 ItemsControl에서 항목 표시의 ZIndex를 제어하고 싶습니다. 사용자가 항목을 탭하면 최상위 요소가됩니다.ItemsControl에서 항목의 ZIndex 바인딩

 <ItemsControl Background="White" Height="auto" Width="auto" x:Name="Parts" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" 
         > 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
         <Canvas></Canvas> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
     </ItemsControl> 

위의보기에 바인드 뷰 모델은 속성 부품이 포함되어

private BindableCollection<IPartViewModel> _parts = new BindableCollection<IPartViewModel>(); 
    public BindableCollection<IPartViewModel> Parts 
    { 
     get { return _parts; } 
     set { _parts = value; NotifyOfPropertyChange(() => Parts); } 
    } 

IPartViewModel가 다른 구현을 가지고, 자신의보기 (= 사용자 정의 사용자 컨트롤) 각. IPartViewModel의 모든 구현에는 바인딩 할 준비가 된 ZIndex 속성이 있습니다.

다른 모든 바인딩 (레이블, 탭 이벤트 ...)은 완벽하게 작동하지만 ZIndex를 제어하기 위해 바인딩이 어떤 모양인지 알아낼 수 없습니다.

그래서이 문제를 해결하기 위해 많은 다른 질문이 있지만 WinRT에는 해당되지 않습니다.

답변

2

나는 내가이 Z- 색인 속성

protected override DependencyObject GetContainerForItemOverride() 
     { 
      var cp = new ContentPresenter(); 
      cp.SetBinding(Canvas.ZIndexProperty, new Binding { Path = new PropertyPath("ZIndex") }); 
      return cp; 
     } 
에 추가 바인딩으로 된 ContentPresenter를 반환 할 경우 사용자 정의 ItemsControl에 이것을 달성하고 메소드 GetContainerForItemOverride을 무시 결국
관련 문제