我正在尝试将某些数据绑定到GridView
Windows 8.1的Hub
控件中。
目前,我的DataTemplate
设置Page.Resources
如下:
<DataTemplate x:Key="Standard240x320ItemTemplateFAV">
<Grid HorizontalAlignment="Left" Width="320" Height="240">
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
<Image Source="{Binding FavImage}" Stretch="UniformToFill"/>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}">
<TextBlock Text="{Binding FavTitle}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextBlockStyle}" Height="48" Margin="15,0,15,0"/>
</StackPanel>
</Grid>
</DataTemplate>
然后我有这个HubSection
:
<HubSection x:Name="FavHub" Padding="40,60,40,0" >
<DataTemplate>
<GridView
x:Name="itemGridView"
Margin="-4,-4,0,0"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Items In Group"
ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource Standard240x320ItemTemplateFAV}"
SelectionMode="Single"
IsSwipeEnabled="false"
IsItemClickEnabled="True"
ItemClick="ItemView_ItemClick">
</GridView>
</DataTemplate>
</HubSection>
我使用以下代码添加DataContext:
FavHub.DataContext = new FavData(Constants.getImage("1002"), "No Favourites");
FavData类在哪里:
public class FavData
{
public static string FavImage { get; set; }
public static string FavTitle { get; set; }
public FavData() { }
public FavData(string itemImageSet, string itemNameSet)
{
FavImage = itemImageSet;
FavTitle = itemNameSet;
}
}
但是,HubSection中没有数据显示。我究竟做错了什么?
您需要将列表(例如List<FavData>
或)绑定ObservableCollection<FavData>
到集线器。
现在,GridView
除了许多其他属性外,您还拥有一个属性初始化功能ItemsSource
。此属性用作项目列表的源。
<GridView x:Name="itemGridView"
ItemsSource="{Binding Items}"
</GridView>
绑定指定为{Binding Items}
,这意味着对于当前绑定到集线器的任何对象,获取存储在Items
属性中的列表。由于您当前已FavData
通过DataContext
属性将单个实例设置为集线器,并且它没有名为的属性Items
,因此没有任何显示。
因此,我的建议是创建一个FavData
实例列表,并将其绑定到Hub实例。如果要直接绑定列表而不是将列表存储在另一个“父”对象中,则还需要调整,Binding
以引用“自身”而不是特定的属性。为此,您只需使用语法:{Binding}
。它只是意味着“与我绑定”。因此,GridView将直接在绑定对象上查找项目列表(的列表FavData
)。
<GridView x:Name="itemGridView"
ItemsSource="{Binding}"
</GridView>
在C#中:
List<FavData> favs = new List<FavData>();
favs.Add(new FavData(Constants.getImage("1002"), "No Favourites"));
FavHub.DataContext = favs;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句