2013-02-19 7 views
2

이것은 XAML을 사용하여 처음으로 8 점포 앱을 얻었으므로 몇 가지 사항이 확실하지 않습니다. 데이터를 gridview에 바인딩하고 싶습니다. 이렇게하려면, 난 내가 그룹 데이터를 Gridview 창에 저장합니다. 앱을 저장합니다.

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) 
    { 
     // TODO: Assign a bindable collection of items to this.DefaultViewModel["Items"] 
     Model.Utility util = new Utility(); 
     var categories = util.GetCategoryList(); // this returns List<Category> 
     this.DefaultViewModel["Items"] = categories; 
    } 

가, 뒤에 코드에서

class Category 
{ 
    public int Id { get; set; } 
    public string CategoryName { get; set; } 
    public string IconPath { get; set; } 
} 

을 내 XAML은 다음과 같습니다

<!-- Horizontal scrolling grid used in most view states --> 
    <GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemsGridView" 
     AutomationProperties.Name="Items" 
     TabIndex="1" 
     Grid.RowSpan="2" 
     Padding="116,136,116,46" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     ItemTemplate="{StaticResource Standard250x250ItemTemplate}" 
     SelectionMode="None" 
     IsSwipeEnabled="false"/> 

하지만 난이 프로그램을 실행할 때 모든 데이터를 볼 해달라고 앱. 내가 어디에서 잘못 했니?

답변

4

Standard250x250ItemTemplate은 기본적으로 Title, SubTitle 및 Image 속성에 바인딩됩니다. 템플릿을 업데이트하지 않는 한 Category 클래스에는 ItemTemplate에 대한 속성이 없으므로 표시 할 내용이 없습니다. 나는 당신이 제목, 부제 및 이미지 속성을 찾을 수 없다는 애플 리케이션을 디버깅 할 때 데이터 바인딩 오류 VS가 있다고 의심합니다.

수정하려면 GridView에서 마우스 오른쪽 버튼을 클릭하고 추가 서식 파일 편집, 생성 된 항목 편집 (ItemTemplate), 복사본 편집 및 서식 파일 업데이트를 선택하여 올바른 요소를 클래스의 속성 이름에 바인딩하십시오.

+0

정말 멋지다. 건배 m8. :) 그것은 작동합니다. – kandroid

1

코드의 일부 이름을 기반으로하면 Grid App 템플릿의 일부 템플릿 코드를 다시 사용하려는 것 같습니다.

나는 또한 당신이 그 같은 XAML 파일에 정의 된 다음과 같은 자원을 가지고있어 가정거야 :

<CollectionViewSource x:Name="itemsViewSource" Source="{Binding Items}" /> 

그렇다면, 당신은 당신의 범주에 있지만 데이터의 각각의 사각형을보고해야한다. 이는 Standard250x250ItemTemplate 데이터 템플리트 (StandardStyles.xaml에 있음)를 참조하고 데이터 소스에서 TitleSubtitle과 같은 이름으로 특정 필드를 찾고 있기 때문입니다. 그러나 카테고리의 경우 CategoryNameId입니다.

대신이 방법을 시도하여 데이터가 표시되는지 확인하십시오. 여기에는 스타일이 없지만 Standard250x250ItemTemplate에서 스타일을 복사하고 원하는 경우 적용 할 수 있습니다. 또한 IDE - Blend 또는 Visual Studio를 통해이 작업을 수행 할 수 있습니다. XAML을 잘라내어 붙여 넣을 필요가 없습니다.

<GridView 
    x:Name="itemGridView" 
    AutomationProperties.AutomationId="ItemsGridView" 
    AutomationProperties.Name="Items" 
    TabIndex="1" 
    Grid.RowSpan="2" 
    Padding="116,136,116,46" 
    ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 

    SelectionMode="None" 
    IsSwipeEnabled="false"> 

    <GridView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding CategoryName}" /> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 
관련 문제