2014-03-25 2 views
0

Windows 8 앱을 개발 중입니다. 그리고 다른 GridView 항목 템플릿 안에 GridView을 표시하고 싶습니다. 그리고 내부 GridView에 가시성 바인딩을 추가했지만 GridViewGridViewItems을 래핑 할 때 바인딩이 작동하지 않습니다. 간단한 ListView 또는 GridView을 랩핑하지 않고 사용할 때 작동합니다.격자보기 내부에 격자보기를 표시하는 방법은 무엇입니까?

이것은 내가 숨기거나 내부 GridView을 보여주기 위해 컨버터를 사용하고 다른 GridView

<DataTemplate x:Key="MyFeedGridView"> 
    <Grid HorizontalAlignment="Left" Width="500">     
     <StackPanel x:Name="gridViewStackPanel" Orientation="Horizontal" > 
      <GridView 
       HorizontalAlignment="Right" 
       x:Name="myFeedGridViewInListView" 
       ItemTemplate="{StaticResource MyFeedGridViewInListView}" 
       ItemsSource="{Binding listContent}" 
       Height="100" 
       Visibility="{Binding listContent,Converter={StaticResource FeedListToVisibilityConverter}}" 
       SelectionMode="None" 
       Width="400" /> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

을 포함 "MyFeedGridView"에 대한

<GridView 
    Name="feedGridView" 
    Background="Transparent" 
    SelectionMode="None" 
    ItemTemplate="{StaticResource MyFeedGridView}"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VariableSizedWrapGrid Height="600" Orientation="Vertical" /> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
</GridView> 

스타일 포장과 주요 GridView입니다. 아래는 내부의 GridView 모든 항목을 숨기거나에 상관없이 내가 바인딩 한하는 listContent의 모든 항목을 볼 수 도착 도착한다는 것입니다 내가

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    List<ContentList> contents = value as List<ContentList>; 

    return (contents != null && contents.Count > 0) ? Visibility.Visible : Visibility.Collapsed; 
} 

내 문제를 사용하고있는 변환기입니다.

나는 이것이 ItemsPanel을 설정할 때만 발생한다는 것을 알아 채 셨습니다. VariableSizedWrapGrid 속성을 제거하면 예상대로 작동합니다. 하지만 각 열 뒤에 항목을 감싸서 제거 할 수는 없습니다.

왜 이런 일이 발생하는지 알려주세요. 그리드 뷰 항목을 배치하는 방법의 이미지를 부착 :

감사

편집 할 수 있습니다. 모눈보기의 첫 번째 항목이 표시되면 노래를 나타내는 모눈 항목 안에 다른 모눈보기가 나타납니다. 따라서이 내부 격자보기는 일부 항목에서는 비어 있고 일부 항목에서는 채워집니다. 그래서 내부 격자보기를 표시하거나 숨기는 가시성 변환기를 작성했습니다. 그리고 변환기를 사용할 때 첫 번째 격자보기 항목에 내부 격자보기 항목 (노래)이있는 경우 모든 항목에 대해 내부 격자보기가 표시되고 첫 번째 격자보기 항목에 내부 격자보기 항목 (노래)이없는 경우 모든 주요 그리드 뷰 항목에 대한 내부 그리드 뷰를 숨 깁니다. GridView의 문제는 모두가 기본적으로 GridViewItems. 당신이 할 수있는 동일한 크기를 사용하는 경우는 명확하지 않다. enter image description here

+0

달성하려는 목표와보기 모델 작성 방법에 대해 좀 더 자세히 설명해 주시겠습니까? 아마도 당신은'GridViewItems'의 상자와 방향 및 순서를 스케치 할 수 있습니다. –

+0

@FilipSkakun 이미지를 추가했습니다. 명확하지 않은지 알려주세요. – user3458865

답변

0

을 알려주세요 ItemsPanel으로 VariableSizedWrapGrid을 사용하면 가상화가 비활성화되므로 성능 비용을 들이지 않고 많은 수의 항목 (수십 개 이상)을 사용할 수 없습니다.

과 일치하지 않는 ItemsSource을 사용할 수 있습니다. 일부 항목은 기본 목록 항목을 나타내고 일부 항목은 노래 목록을 나타내며 ItemTemplateSelector을 사용하여 어떤 유형의 항목에 사용할 지 지정합니다 . 물론 이상적인 것은 아니지만 이것이 가장 쉬운 옵션입니다. 한 가지 문제점은 이러한 노래 목록 중 일부가 연결된 항목과 다른 열에 고아가 될 수 있으므로 추악한 해결 방법의 경우 열당 항목 수를 알아 내야하고 목록에 빈 항목이 포함될 수도 있습니다 빈 항목의 끝 항목이 연관된 노래 목록이없는 항목으로 채워지도록 항목을 재정렬하십시오.

더 나은 옵션은 수직 목록 이럴 수평 GridViews에 비해 이동하기 쉽게 때문에, VariableSizedWrapGridItemsSource로를 사용하거나 수동으로 채워 Grid을 사용하고 ListView을 여는 끝에 more... 항목을 추가 할 수 있습니다. 원하는 레이아웃을 얻고 목록의 가상화를 유지하려면 여전히 비 균일 한 ItemsSourceItemTemplateSelector을 사용해야하지만 이는 사용자가 얻는 결과입니다.

관련 문제