2010-12-09 4 views
6

속성 Workspace를 기반으로 DataTemplateSelector에 의해 내용이 결정되는 ContentControl이 있습니다. 그러나 데이터 템플릿이 변경되면 ContentControl 및 전체 Window의 초기 크기를 기반으로 일부 계산을 수행해야하므로로드 될시기를 알고 싶습니다.변경시 ContentControl의 내용이로드 될 때를 어떻게 알 수 있습니까?

<ContentControl Content="{Binding Path=Workspace}" ContentTemplateSelector="{StaticResource workspaceTemplateSelector}" /> 

있는 ResourceDictionary :

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:vw="clr-namespace:Capgemini.Sag.KeyEm.View"> 

    <DataTemplate x:Key="keyboardTemplate" > 
     <vw:Keyboard/> 
    </DataTemplate> 

    <DataTemplate x:Key="welcomeTemplate"> 
     <vw:Welcome/> 
    </DataTemplate> 

    <vw:WorkspaceTemplateSelector    
     KeyboardTemplate="{StaticResource keyboardTemplate}"    
     WelcomeTemplate="{StaticResource welcomeTemplate}"   
     x:Key="workspaceTemplateSelector"/> 
</ResourceDictionary> 

DataTemplateSelector : 당신이 할 수있는

using Capgemini.Sag.KeyEm.ViewModel.Interfaces; 

namespace Capgemini.Sag.KeyEm.View 
{ 
    using System.Windows; 
    using System.Windows.Controls; 

    class WorkspaceTemplateSelector : DataTemplateSelector 
    { 
     public DataTemplate WelcomeTemplate { get; set; } 
     public DataTemplate KeyboardTemplate { get; set; } 

     public override DataTemplate SelectTemplate(object item, DependencyObject container) 
     { 
      if (item is IWelcomeViewModel) 
       return WelcomeTemplate; 
      if (item is IKeyboardViewModel) 
       return KeyboardTemplate; 
      return null; 
     } 
    } 
} 
+0

이 문제를 해결하는 적절한 방법은 자신의 질문에 대답 한 다음 며칠 후 정답으로 선택하는 것입니다. – Will

답변

0

한 가지는로드 이벤트

<DataTemplate x:Key="keyboardTemplate"> 
     <Grid Loaded="Grid_Loaded"> 
      <vw:Welcome/> 
     </Grid> 
    </DataTemplate> 
에 컨테이너 내부에 DataTemplate을 내용을 포장 듣고있다

템플릿이 전환되면로드 된 이벤트가 발생합니다. 도움이 될 것입니다.

+0

Grid_Loaded는 ResourceDictionary의 코드 숨김에 있어야합니다. 그러나 계산은 ResourceDictionary를 사용하는 Window에 있습니다. 어떻게 해결할 수 있습니까? – magol

+0

도움이되는지 확인하십시오. http://stackoverflow.com/questions/92100/is-it-possible-to-set-code-behind-a-resource-dictionary-in-wpf-for-event-handling – biju

+0

나는 어떻게할까요? ResourceDictionary에 코드 숨김을 추가합니다. 하지만 부모 창 너비를 어떻게 전달합니까? – magol

관련 문제