2017-11-07 3 views
-1

UWP 앱을 개발 중입니다. 내 앱에서 시맨틱 줌을 구현하고 싶습니다. 그룹화 된 데이터 모음이 있으며 사전 순으로 정렬됩니다. Windows 10의 People 앱이 나타내는 것처럼 ZoomOut보기에서 내 그룹 제목을 나타내려고합니다. 여기 내 개념을 이해하는 데 도움이 될 사진이 있습니다.시맨틱 줌 UWP 인물 앱

Semantic Zoom

  1. 내가 이런 식으로 어떻게 할 수 있습니까?

  2. GridView의 사용자가 D, J, K, L 항목을 클릭하지 못하게하려면 어떻게해야합니까? ( 은 ZoomInView에서 D, J, K, L 항목이 없음).

다음은 내가 작성한 샘플입니다. 고급 시맨틱 줌을 구현하려면 추가 도움이 필요합니다.

Semantic Zoom Sample

답변

1

내가 이런 식으로 어떻게 할 수 있습니까? 당신은 ~ Z를

에서 알파벳하여 그룹 제목을 정렬 할 경우

는 당신은 당신의 ListView의 ItemsSource로 바인딩 그 전에 그룹을 정렬 할 필요가있다.

var gpData = Contacts.GroupBy(a => a.Name[0], (key, con) => new GroupData() { HeaderTitle = key, Items = con.ToList() }).OrderBy(o=>o.HeaderTitle); 

가 어떻게 D 클릭에서 사용자를 방지 할 수 있습니다, J, K, L 항목의 GridView의 (나는 ZoomInView에서 D, J, K, L의 모든 항목을 가지고 있지 않는 한).

기본 원칙은 ListViewItem의 IsEnabled 속성을 false로 설정해야한다는 것입니다.

<SemanticZoom.ZoomedOutView> 
      <ListView ItemsSource="{x:Bind CVS.View.CollectionGroups}" SelectionMode="None" GotFocus="ListView_GotFocus"> 
       <ListView.ItemContainerStyle> 
        <Style TargetType="ListViewItem"> 
         <Setter Property="IsEnabled" Value="False"></Setter> 
        </Style> 
       </ListView.ItemContainerStyle> 
       <ListView.ItemTemplate> 
        <DataTemplate x:DataType="wuxdata:ICollectionViewGroup"> 
         <TextBlock Text="{x:Bind Group.(data:GroupData.HeaderTitle)}"/> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 
</SemanticZoom.ZoomedOutView> 

경우에 따라 IsEnable 속성을 동적으로 설정해야합니다.

+0

감사합니다. –