2012-04-25 2 views
0

wpf listview의 열 머리글 가시성을 내가 사용하는 전역 스타일 (표현식 어두움)을 잃지 않고 종속성 속성에 바인딩하고 싶습니다. 글로벌 스타일 손실없이 열 머리글 가시성을 바인딩하십시오.

<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}"> 
    <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" /> 
</Style> 

가 그럼 난 이런 식으로 적용 :

<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"> 

내가 표현 어두운 테마를 사용하고

나는 스타일을 정의했다. MergedDictionaries를 통해 가져 왔으며 런타임에 변경할 수 있습니다.

열 머리글이 보이지 않으면 모든 것이 좋습니다. 그러나 눈에 보이는 경우 ColumnHeaderContainerStyle을 설정하면 표현식 어두운 스타일이 무시되므로 기본 Windows 스타일로 표시됩니다.

런타임시 스타일을 변경해야하기 때문에 모든 리소스가 동적이기 때문에 원래 스타일에서 "BasedOn"을 사용하는 것은 옵션이 아닙니다. BasedOn은 정적 리소스에서만 작동하며 런타임시 변경을 허용하지 않습니다.

그 밖의 무엇을 할 수 있습니까?

답변

1

이 방법이 효과가 있는지는 잘 모르지만 기본 스타일을 기본 스타일로 지정할 수는 있습니다.

<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource {x:Type GridViewColumnHeader}}"> 
    <Setter Property="Visibility" Value="{Binding ColumnHeaderVisibility}" /> 
</Style> 
+0

시도했습니다. 스타일은 기본 스타일에서 상속되지 않습니다 (아마도 staticresource로 참조되고 아직 스타일이 설정되지 않은 컴파일 타임에 해결되기 때문일 수 있습니다). –