2017-11-07 5 views
-1

私はUWPアプリケーションを開発しています。私は私のアプリでセマンティックズームを実装したい。グループ化されたデータのコレクションがあり、アルファベット順にソートされています。私は、Windows 10のPeopleアプリが表すように、ZoomOutビューで自分のグループタイトルを表現したいと思います。ここに私のコンセプトを理解するのに役立つ画像があります。UWPのような意味的なズームPeople People

Semantic Zoom

  1. 私はこのような方法を行うことができますか?

  2. GridViewのD、J、K、L項目をクリックしないようにするにはどうすればよいですか?( はZoomInViewにD、J、K、Lの項目がありません)

ここに私が作成したサンプルがあります。私は高度なセマンティックズームを実装するためにさらに助けが必要です。

Semantic Zoom Sample

答えて

1

私はこのような方法を行うことができますか?

あなたはA〜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

ありがとうございました –

関連する問題