2017-09-07 18 views
3

MVVM 구성표를 사용하여 현재 WPF 응용 프로그램을 최적화하기 위해 프레임 워크를 사용하려고합니다. 버튼의 동작을 설정하는 것은 일반적으로 버튼의 값을 x:Name으로 설정하고 뷰 모델에 같은 이름의 함수를 추가하는 것만으로 아무런 문제없이 매우 잘 수행 할 수 있습니다. 당신이 이것을 ControlTemplate 안에 넣으려고 할 때 (적어도 그것이 그렇게 보인다) 더 복잡해진다. 나의 현재의 접근 방식은이 코드는 다음과 같습니다 슬프게도Caliburn.Micro : ControlTemplate 내의 버튼 동작

<ItemsControl x:Name="Chains"> 
    <ItemsControl.Template> 
     <ControlTemplate TargetType="ItemsControl"> 
      <StackPanel> 
       <ContentControl/> 
       <ItemsPresenter /> 
       <Button Content="+" x:Name="AddChain"/> 
      </StackPanel> 
     </ControlTemplate> 
    </ItemsControl.Template> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

그러나, 배치 코드가 호출되지 않습니다있는 view에 해당하는 ViewModelAddChain 방법.

는 나는이 ViewModel 아닌 ControlTemplate에 해당하는 ViewModel를 사용하는 Caliburn을 말해야한다고 생각합니다. 이 올바른지? 문제를 어떻게 해결할 수 있습니까?

답변

1

바인드 뷰 모델에 cal:Bind.Model 연결된 속성 :

<ItemsControl x:Name="Chains"> 
    <ItemsControl.Template> 
     <ControlTemplate TargetType="ItemsControl" xmlns:cal="http://www.caliburnproject.org"> 
      <StackPanel cal:Bind.Model="{Binding}"> 
       <ContentControl/> 
       <ItemsPresenter /> 
       <Button Content="+" x:Name="AddChain"/> 
      </StackPanel> 
     </ControlTemplate> 
    </ItemsControl.Template> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl>