나는 열이있는 ListView에 특정 스타일을 갖고 싶어 :WPF 목록보기 : 헤더 스타일링
모든 열 머리글의 배경 마우스가 이상 그들 중 하나에있을 때를 제외하고 투명해야한다.
이 문제가 발생하면 마우스가 끝난 열의 배경이 노란색이어야하고 다른 열의 모든 색은 파란색이어야합니다.
GridViewColumnHeader 템플릿으로 재생 해봤지만 활성 열 배경 만 변경하는 것처럼 보입니다. 어떤 도움이 필요합니까?
나는 열이있는 ListView에 특정 스타일을 갖고 싶어 :WPF 목록보기 : 헤더 스타일링
모든 열 머리글의 배경 마우스가 이상 그들 중 하나에있을 때를 제외하고 투명해야한다.
이 문제가 발생하면 마우스가 끝난 열의 배경이 노란색이어야하고 다른 열의 모든 색은 파란색이어야합니다.
GridViewColumnHeader 템플릿으로 재생 해봤지만 활성 열 배경 만 변경하는 것처럼 보입니다. 어떤 도움이 필요합니까?
마지막으로, 나는이 작업을 수행하는 방법을 발견 : 기본적으로, 상위 GridViewHeaderRowPresenter
을 선택하면 볼 수 트리거를 설정합니다. 모든 헤더는 해당 속성에 true
을 반환합니다.
그런 다음 헤더에 마우스가 있고 선택한 헤더 만 true
을 반환하는지 확인합니다.
결과는 다음과 같이 될 것입니다 : 이
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type GridViewHeaderRowPresenter}},
Path=IsMouseOver}"
Value="True">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderActiveColumnBackground}"/>
<Setter TargetName="PART_HeaderGripper" Property="Background"
Value="{StaticResource VerticalLineColor}"/>
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderSelectedColumnBackground}"/>
</Trigger>
<Trigger Property="HasContent" Value="false">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderDefaultColumnNoContentBackground}"/>
<Setter TargetName="PART_HeaderGripper" Property="Background"
Value="{StaticResource HeaderDefaultColumnNoContentBackground}"/>
</Trigger>
</ControlTemplate.Triggers>
이렇게하려면 전체 ListView 스타일을 교체해야 할 것입니다. Microsoft has an example.
당신은 거기에 표시된 ScrollViewer
스타일로 GridViewHeaderRowPresenter
주위에 Border
를 넣고 블루에 그 Border
의 배경을 설정하는 IsMouseOver
트리거를 추가해야합니다.
그런 다음 GridViewColumnHeader
템플릿에서 배경을 노란색으로 만들려면 IsMouseOver
트리거가 필요합니다.
추가 설명이 필요하면 질문하십시오.
- 는 HTH, 먼지
내가 찾은 해결책은 당신이 언급 한 것과 생각이 비슷 생각은, 당신이 필요로 전용하는 스타일링에서 ScrollViewer 및 광산에있을 것입니다 GridViewColumnHeader를 직접 호출합니다. 어쨌든 고마워! – federubin