我正在尝试在我的Metro应用程序中使用C#和XAML SemanticZoom控件绑定,但说实话,我对如何操作感到茫然。这是我到目前为止通过拼凑问题,文章等得到的XAML代码:
<SemanticZoom x:Name="boardZoom" Height="626" Margin="10,132,10,0" VerticalAlignment="Top">
<SemanticZoom.ZoomedInView>
<GridView IsSwipeEnabled="True" x:Name="ItemsGridView">
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="10,10,0,0"
HorizontalAlignment="Left" Background="White">
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" Width="200" Height="300"
FontFamily="Global User Interface" FontSize="40" Foreground="Black"
VerticalAlignment="Center" HorizontalAlignment="Left"/>
<Image Source="{Binding Image}" Height="60" Width="60"
VerticalAlignment="Center" Margin="0,0,10,0" Visibility="{Binding isImage}" />
<TextBlock Text="{Binding Category}" TextWrapping="Wrap" Width="200"
FontFamily="Global User Interface" Foreground="Black"
VerticalAlignment="Center" HorizontalAlignment="Left"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</SemanticZoom.ZoomedInView>
<!--Didn't include SemanticZoom.ZoomedOutView since I'm still trying to get the ZoomedIn one working first-->
</SemanticZoom>
我的C#代码:
List<PinStore.pin> pins = PinStore.CopyFromStream(response.GetResponseStream()); //returns a list of PinStore.pin objects, which have name, type, Image, isImage, and Category objects
System.Collections.ObjectModel.ObservableCollection<SemanticZoomed.zoomedIn> toSource = new System.Collections.ObjectModel.ObservableCollection<SemanticZoomed.zoomedIn>(); //should I be using ObservableCollection or something like List<> here?
foreach (PinStore.pin pin in pins)
{
SemanticZoomed.ZoomedIn toAdd = new SemanticZoomed.ZoomedIn(); //class with Title, Image, isImage, and Category objects
if (pin.type == "text")
{
toAdd.Title = pin.name;
toAdd.Image = null;
toAdd.isImage = Visibility.Collapsed;
toAdd.Category = pin.category;
}
toSource.Add(toAdd);
}
ItemsGridView.DataContext = toSource;
我在XAML / C#方面没有太多经验,没有结合经验。我没有收到任何错误,但我注意到如果我用ItemsGridView.DataContext = toSource;
替换ItemsGridView.ItemsSource = toSource;
,则会在GridView中显示一个空白的堆栈面板,而我似乎无法找到填充该错误的方法我指定的标题和类别值。谢谢!
答案 0 :(得分:1)
那么你应该首先考虑创建一个ResourceDictionary,这样你就可以保存你的项目风格。然后,您可以将ItemStyle设置为资源字典。
但无论你需要做什么:ItemsGridView.ItemsSource = toSource;如果您不选择在GridView xaml中绑定toSource。
还要确保SemanticZoomed.zoomedIn对象实现INotifyPropertyChanged接口,并正确调用事件。并确保标题,图像,类别等是在编辑时调用事件的公共属性。而且你需要确保pin.Text是一个实际值。 {确保}。
如果您想了解有关数据绑定的更多信息,请查看他们如何在C#&amp; amp; Windows 8的XAML {应该是一样的}: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh464965.aspx