2014-11-20 2 views
0

dll의 리소스에서 적용된 스타일을 가진 창에 기본 TreeView가 있습니다. 스타일 dll은 두 가지 스타일을 전환 할 수 있습니다. dll에 TreeView 스타일이 없으면 TreeViewItems를 확장하고 다른 컨트롤의 스타일을 전환 할 수 있으며 TreeViewItems가 확장 된 상태로 유지됩니다. 그러나, TreeView에 대한 스타일을 추가하자 마자 스타일이 바뀌 자마자 확장 된 TreeViewItems가 축소됩니다.WPF TreeView 스타일 템플릿 스타일 스위치에서 IsExpanded 재설정

모든 멋진 애니메이션과 TreeViewItem 스타일이 문제를 추적하기 위해 제거되었습니다. 나머지 스타일은 간단합니다 :

<Style x:Key="{x:Type TreeView}" TargetType="{x:Type TreeView}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TreeView"> 
       <Border Name="Border" 
         Background="Transparent" 
         BorderThickness="1" 
         CornerRadius="1"> 

        <ItemsPresenter /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

모든 의견을 크게 기뻐할 것입니다. 나는 아이디어가 떨어졌다!

답변

0

템플릿을 제거하거나 다른 템플릿으로 대체하면 일부 종속성 속성이 기본값으로 다시 설정됩니다. 그 이유는 종속성 속성 우선 순위입니다. 여기에서 살펴보십시오. http://msdn.microsoft.com/library/ms743230

이렇게 생각하십시오. 종속성 속성에는 여러 값이 포함될 수 있습니다. 최상위 레이어의 값은 항상 현재 값입니다. 작풍을 멀리 가지고가는 경우에, 당신은 또한 멀리 층을 가지고 간다. 모든 레이어를 제거하면 종속성 속성은 현재 값으로 기본값을 사용합니다.

당신이 당신의 트 리뷰의 스타일을 교체 할 때, 모든 아래 스타일이 업데이트됩니다/reinitalized/변경/resetted ...

이 같은 템플릿을 계속 시도하고 해당 같은 색상, 테두리와 물건을 변경할이 문제를 해결하려면. . 바인딩을 사용하십시오.

+0

답변 해 주셔서 감사합니다. TreeView (내 질문에 표시된)에 대한 하나의 템플릿을 가지고 어떤 트리거 및 최소한의 스타일링. 나는 이전에 IsExpanded 속성을 갖고 있으며이 문제가 없었던 같은 방식으로 확장기 스타일을 지정했습니다. TreeView 자체의 한계입니까? –

+0

ItemsPresenter를 재설정하지 않으려 고합니다. 그 나쁜 엉덩이가 아이템을 표현할 책임이 있고, 그것을 죽이면 모든 것이 손실됩니다. –

+0

아이템 발표자는 위의 코드와 다르게 사용됩니까? 나는 스타일 템플릿 안에 있다는 점을 제외하고는 아무 것도하지 않습니다. –