2012-04-13 3 views
0

私はWCFサービスから取得したいくつかのイベントアイテムを表示するためにGridviewを使用しています。 コード私が使用Griviewによるデータバインディング

コードビハインド:

List<GroupInfoList<object>> groups = new List<GroupInfoList<object>>(); 
ServiceReference1.Service1Client c = new ServiceReference1.Service1Client(); 
List<Tag> tags=(await c.GetUserTagsAsync(u.id)).ToList(); 
var q = from t in tags 
       orderby ((Tag)t).tag1 
       group t by ((Tag)t).tag1 into g 
       select new { GroupName = g.Key, Items = g }; 
     foreach (var g in q) 
     { 
      GroupInfoList<object> info = new GroupInfoList<object>(); 
      info.Key = g.GroupName; 
      foreach (var item in g.Items) 
      { 
       info.Add(item); 
      } 
      groups.Add(info); 
     } 
     cvs1.Source = groups; 

public class GroupInfoList<T> : List<object> 
{ 

    public object Key { get; set; } 


    public new IEnumerator<object> GetEnumerator() 
    { 
     return (System.Collections.Generic.IEnumerator<object>)base.GetEnumerator(); 
    } 
} 

WCF署名:

List<Event> GetEventsByTag(string tag); 
List<Tag> GetUserTags(Guid uid); 

XAML

<GridView x:Name="ItemsByCategory" VerticalAlignment="Bottom" 
            ItemsSource="{Binding Source={StaticResource cvs1}}" 
            BorderBrush="Gray" BorderThickness="1"> 

     <GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 

     <GridView.ItemTemplate> 
      <DataTemplate> 
       <Grid HorizontalAlignment="Left" Background="White"> 
        <StackPanel Orientation="Horizontal" Margin="10,10,0,0">        
         <Image Source="{Binding Image}" Height="60" Width="60" VerticalAlignment="Center" Margin="0,0,10,0"/> 
         <StackPanel Margin="0,0,0,0" Orientation="Vertical"> 
          <TextBlock TextWrapping="Wrap" Style="{StaticResource ItemTitleStyle}" Width="200" VerticalAlignment="Center" Text="{Binding XXXXXXXX}" 
             HorizontalAlignment="Left" FontFamily="Segoe UI" /> 
         </StackPanel> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </GridView.ItemTemplate> 

     <GridView.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <Grid Background="White" Margin="0"> 
          <TextBlock Text='{Binding Key}' Foreground="Gray" FontSize="25" Margin="5" /> 
         </Grid> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 

       <GroupStyle.Panel> 
        <ItemsPanelTemplate> 
         <VariableSizedWrapGrid Orientation="Vertical"/> 
        </ItemsPanelTemplate> 
       </GroupStyle.Panel> 
      </GroupStyle> 
     </GridView.GroupStyle> 
    </GridView> 

問題は私が入れてかわからないですTextBlockのデータバインディング(XXXでマークされている)ので、各イベントのタイトルプロパティにバインドできます私のソースですか?

答えて

1

最終的に私はこの

foreach (var g in q) 
     { 
      GroupInfoList<object> info = new GroupInfoList<object>(); 
      info.Key = g.GroupName; 
      foreach (var item in g.Items) 
      { 
       foreach (var ev in item.Events) 
       { 
        info.Add(ev); 
       } 
      } 
      groups.Add(info); 

とXAML

<TextBlock TextWrapping="Wrap" Style="{StaticResource ItemTitleStyle}" Width="200" VerticalAlignment="Center" Text="{Binding title}" 
             HorizontalAlignment="Left" FontFamily="Segoe UI" /> 
のようになるようにコードを変更し、C#ではそれに

固定

関連する問題