2010-05-10 2 views
0

저는 여러 가지보기를위한 컨테이너 인 간단한 창을 가지고 있습니다. 윈도우의 MainViewModel 속성이 무엇이든간에 기반하여 올바른 뷰를 보여주는 DataTemplate이 있습니다. 내가하고 싶은 무엇UserControl의 데이터 유형을 기반으로 Window Properties를 설정하십시오.

<DataTemplate DataType="{x:Type VM:StartupViewModel}"> 
    <AdornerDecorator> 
     <V:StartupView /> 
    </AdornerDecorator> 
</DataTemplate> 

는 대신 속성 값의 데이터 유형에 대한 트리거와 같은 등 무언가 기본 창에서 예 WindowStyle, ResizeMode 일부 속성을 변경, 특정 전망입니다? 어떻게이 작업을 수행 할 수 있습니까?

편집 :

답변

0

아니에요 ...

<Window.Style> 
     <Style> 
      <Setter Property="Window.WindowStyle" 
        Value="SingleBorderWindow" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self} , Path=DataContext.MainViewModel}" 
          Value="{x:Type VM:StartupViewModel}"> 
        <Setter Property="Window.WindowStyle" 
          Value="None" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Style> 

이 럼주 있지만 효과가 없습니다 :

좀 더 인터넷 검색 후 나는 이런 식으로 뭔가를하고 싶은 생각 데이터 유형에 직접 바인딩 할 수 있는지 확인하십시오. 그러나 선택한 데이터 유형에 따라 ViewModel에서 일부 속성을 설정할 수 있습니다. 차례대로이 속성에 WindowStyle 속성을 바인딩 할 수 있습니다.

데이터 유형에 어떻게 든 바인딩 할 수 있다면 BindingConverters을 사용하고 창 속성에 직접 바인딩 할 수 있습니다.

0

많은 좌절감을 느낀 이유는 그것이 작동하지 않는 이유를 알아 냈습니다. 바인딩 경로가 올바른 개체를 반환했지만 값이 x : Type이므로 인스턴스 개체와 형식을 비교하는 것으로 보입니다. 그래서 개체의 형식을 반환하는 간단한 변환기를 추가하고 작동했습니다.

저는 x : Type으로 값을 지정한 경우 WPF는 바인딩 유형을 값과 비교하기를 원한다고 생각했습니다. 오랫동안 바인딩이 잘된 것 같았고 문제는 방아쇠를 당겨서 발생했습니다. 방아쇠가 있으면 볼 수있는 것이 좋습니다. 비주얼 스튜디오에서 뭔가 잘못되었다고 생각하기 시작했습니다. D

관련 문제