[WPF] 공공데이터 포털 API 이용 클라이언트 구현 Part 3

이미지
그룹핑 ListViewItem 그룹핑 할 수 있습니다. 먼저 CheckBox에 Checked 이벤트를 통해 그룹핑을 추가하고 RemoveChecked 이벤트를 통해 그룹핑을 제거 할 수 있도록 CheckBox를 선언 합니다. 1: <!-- Group CheckBox --> 2: <CheckBox Grid.Column="0" 3: Grid.Row="0" 4: Checked="AddGrouping" 5: Unchecked="RemoveGrouping">Group by Name</CheckBox> 그룹 스타일 선언 GroupStyle 속성에 ContainerStyle 속성을 이용해 Style을 지정 합니다. Expander 컨트롤을 이용해 아파트명과 그룹 아이템의 개수를 Expander Header에 표시 하도록 ControlTemlate를 선언 합니다. 1: <!-- Group Style --> 2: <ListView.GroupStyle> 3: <GroupStyle> 4: <GroupStyle.ContainerStyle> 5: <Style TargetType="{x:Type GroupItem}"> 6: <Setter Property="Margin" Value="0,0,0,5" /> 7: <Setter Property="Te...

Dependency Property 우선 순위

FontSize는 Window 개체에서 20으로 설정됩니다. 이제 모든 TextBlock은 기본값 대신 글꼴 크기로 20이라는 값을 사용하게 됩니다.


<Window x:Class="MainWindow" Title="MainWindow" FontSize="20" Width="400" Height="300">    
    <StackPanel>        
        <TextBlock Text="Text 1" />
        <TextBlock Text="Text 2" />
        <TextBlock Text="Text 3" />
    </StackPanel>
</Window>


 만약 TextBlock 중 하나가 다른 FontSize 값을 다음과 같이 설정한다고 가정 해보겠습니다.



<Window x:Class="MainWindow" Title="MainWindow" FontSize="20" Width="400" Height="300">    
    <StackPanel>        
        <TextBlock Text="Text 1" />
        <TextBlock Text="Text 2" FontSize="30" />
        <TextBlock Text="Text 3" />
    </StackPanel>
</Window>


Text 2에 FontSize 값(로컬값)이 30이 적용 되었습니다. 이는 종속성 속성에 우선순위가 있다는 겁니다. 


실제로 11개의 우선순위가 있으며 MSDN에서 발췌했습니다.

종속성 속성 설정 우선 순위 목록

다음은 속성 시스템에서 종속성 속성의 런타임 값을 할당할 때 사용하는 최종적인 순서입니다. 가장 높은 우선 순위가 가장 먼저 나열됩니다. 이 목록은 종속성 속성 개요에 나와 있는 일반적인 순서를 확장한 것입니다.
  1. 속성 시스템 강제 변환. 강제 변환에 대한 자세한 내용은 이 항목의 뒷부분에 있는 강제 변환, 애니메이션 및 기준 값을 참조하십시오.
  2. 활성 애니메이션 또는 보류 동작이 있는 애니메이션. 속성 애니메이션이 실제로 효과를 발휘하려면 기준 값이 로컬로 설정된 경우에도 애니메이션되지 않은 기준 값보다 높은 우선 순위를 가질 수 있어야 합니다. 자세한 내용은 이 항목의 뒷부분에 있는 강제 변환, 애니메이션 및 기준 값을 참조하십시오.
  3. 로컬 값. 편리 하 게도 동일에서 특성 또는 속성 요소로 설정 하는 "래퍼" 속성을 통해 로컬 값을 설정할 수 있습니다 XAML, 또는를 호출 하 여 합니다 SetValue API 특정 인스턴스의 속성을 사용 하 여 합니다.바인딩이나 리소스를 사용하여 로컬 값을 설정하면 이들 각각은 직접 값을 설정한 것과 같은 우선 순위가 적용됩니다.
  4. TemplatedParent 템플릿 속성. 요소에는 TemplatedParent 템플릿의 일부로 만들어진 경우 (한ControlTemplate 또는 DataTemplate). 적용 시기에 대한 자세한 내용은 이 항목의 뒷부분에 있는TemplatedParent를 참조하십시오. 템플릿 내에서는 다음과 같은 우선 순위가 적용됩니다.
    1. 트리거되는 TemplatedParent 템플릿.
    2. 속성 집합 (일반적으로 통해 XAML 특성)에 TemplatedParent 템플릿.
  5. 암시적 스타일. Style 속성에만 적용됩니다. Style 속성은 해당 요소의 유형과 일치하는 키를 가진 스타일 리소스로 채워집니다. 해당 스타일 리소스가 페이지나 응용 프로그램에 있어야 합니다. 암시적 스타일 리소스의 조회는 테마로 이어지지 않습니다.
  6. 스타일 트리거. 페이지나 응용 프로그램의 스타일에 있는 트리거(명시적 또는 암시적인 스타일일 수 있으나 우선 순위가 더 낮은 기본 스타일은 제외).
  7. 템플릿 트리거. 스타일에 있는 템플릿 또는 직접 적용된 템플릿의 모든 트리거.
  8. 스타일 setter. 값을 Setter 페이지나 응용 프로그램의 스타일입니다.
  9. 기본(테마) 스타일. 이 스타일이 적용되는 시기, 그리고 테마 스타일에 있는 템플릿과 테마 스타일의 관계에 대한 자세한 내용은 이 항목의 뒷부분에 있는 기본(테마) 스타일을 참조하십시오. 기본 스타일 내에서는 다음과 같은 우선 순위가 적용됩니다.
    1. 테마 스타일의 활성 트리거.
    2. 테마 스타일의 setter.
  10. 상속. 몇 가지 종속성 속성은 상위 요소에서 하위 요소로 값을 상속하므로 응용 프로그램 전체에서 각 요소에 따로 설정할 필요가 없습니다. 자세한 내용은 속성 값 상속을 참조하십시오.
  11. 종속성 속성 메타데이터의 기본값. 종속성 속성에는 해당 속성의 속성 시스템 등록에 따라 설정된 기본값이 있을 수 있습니다. 또한 종속성 속성을 상속하는 파생 클래스에서는 유형별로 해당 메타데이터를 재정의할 수 있습니다(기본값 포함). 자세한 내용은 종속성 속성 메타데이터를 참조하십시오. 기본값보다 먼저 상속을 확인하므로, 상속된 속성의 경우는 상위 요소의 기본값이 하위 요소의 기본값보다 우선적으로 적용됩니다. 따라서 상속 가능한 속성이 어디에서도 설정되어 있지 않으면 하위 요소의 기본값 대신 루트나 상위에 지정된 기본값이 사용됩니다.
https://docs.microsoft.com/ko-kr/dotnet/framework/wpf/advanced/dependency-property-value-precedence 바로가기

댓글

이 블로그의 인기 게시물

[C#] Task 완료 시 다른 Task를 자동으로 수행

[C#] 태스크(Task)가 완료될 때 까지 대기하여 결과를 얻는 방법

[C#] 명시적으로 Task 생성 및 실행