2013-12-12 4 views
0

내보기 (UserControl) xaml의 일부만 전환하고 싶습니다. 예를 들어 2nd Grid 만 변경할 수 있습니다.보기에서 xaml 부분 전환 (Caliburn.Micro)

<Grid> //main grid 
    <Grid Name="1" Grid.Row="1"/> 
    <Grid Name="2" Grid.Row="2"/> 
</Grid 

것은이 같은 STH를 시도했다 : 그런 다음

<UserControl.Resources> 
    <ControlTemplate x:Key="UsualMode"> 
     <Grid> 
     ... 
     </Grid> 
    </ControlTemplate> 
</UserControl.Resources> 
<Grid> //main grid 
    <Grid Name="1" Grid.Row="1"/> 
    <ControlTemplate Name="2" Grid.Row="2" Template="{StaticResource UsualMode}"/> 
</Grid> 

, 트리거를 사용하여 내가 템플릿을 전환 할 수있을 것 바인딩에 의해. 불행히도 'Bootstrapper.cs를 찾을 수 없음'예외로 인해이 기능이 작동하지 않습니다. 어떻게해야합니까? 나는 지휘자를 사용할 수 없다 ->보기를 하나만로드해야한다. 보기 해상도의 기초 읽기 최대

+0

위에 표시 한으로 의견을 교환 할 하위 영역을 처리하기 위해 작성하는 것 같은 뷰 모델을 통해보기를 전환 할 수 하시겠습니까? Caliburn Micro가이 기능을 지원한다면 'View.Context' 연결된 속성과 CM 문서를 살펴보십시오. – Charleh

+0

"지휘자는 사용할 수 없습니다 ->보기를 하나만로드해야합니다." 하나의보기 만이보기의 내용을 전환 할 수 있습니다. –

답변

1

http://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Conventions

기본적으로 당신이보기에 다음과 같은 만들 것입니다 :

<UserControl.Resources> 
    <ControlTemplate x:Key="UsualMode"> 
     <Grid> 
     ... 
     </Grid> 
    </ControlTemplate> 
</UserControl.Resources> 
<Grid> //main grid 
    <Grid Name="1" Grid.Row="1"/> 
    <ContentControl x:Name="ChildViewModel" cal:View.Context="{Binding ContextBinding}" /> 
</Grid> 
는 '문맥'속성을 가질 필요가 뷰 모델

당신의 부모와 아이를 수용 할 수있는 물건 VM :

public class ParentViewModel 
{ 
    public SomeViewModel ChildViewModel { get; private set; } 

    public string ContextBinding { get; private set; } // make sure you implement INPC on these properties as is the usual 
} 

그러면 위의 CM 규칙에 따라 ContextBinding 문자열을 기준으로보기가 해결됩니다.

당신은 문자열을 업데이트했다 그래서 경우 : 다음 UI를 업데이트하고 뷰를 찾기 위해 노력할 것이다

ContextBinding = "DetailedView"; 

CM은 현재 VM의 네임 스페이스

의 subnamespace에 DetailedView라고하면 돈 자식 VM을 갖기를 원한다면, 실제로는 이전 버전의 CM 컨벤션을 가져 와서 현재 VM에 대한 컨텍스트를 적용 할 수 있지만,이 경우에는 당신이 원하는 영역을 제외하고는 거의 동일한 두 개의 뷰를 생성해야합니다. '스왑 아웃'하고 싶다.

내 취향이 아이 VM 내가

관련 문제