0

我有一个与数据源完美结合的 GridView 绑定。

public void LoadXmlData(string dateOfRunAsString)
{
    IEnumerable<RetrieveFromXml> processList = from process in xmlDocument.Descendants("Process") 
                                               where process.Parent.Parent.Attribute("Date").Value == dateOfRun 
                                               select new RetrieveFromXml(process.Attribute("Name").Value, Convert.ToDouble(process.Elements("ActiveTime").Sum(sec => (int)sec)));
    NameGrid.ItemTemplateSelector = myTemplateSelector;
    NameGrid.ItemsSource = processesList;
}

现在的问题是我需要将 Gridview 组合到一个 FlipView。

就像 FlipView 每天都会显示一个网格视图。

就像是

for(int i = 0; i<10; i++)
{
    flipview.list.add(processfromxml(date+i));
    //Consider processfromxml() is returning a Ienumerable List
}

这样 FlipView 将显示第一天的 GridView,然后单击下一步,它会显示第二天的 GridView。

请帮助如何在 Windows 8 中的 XAML、C# 中实现这一点

这是我获取数据的基础类。

public class RetrieveProcessFromXml
{
    private string name;
    private double activeTime;

    public RetrieveFromXml(string nameFromXml,double activeTimeFromxml)
    {
        name = nameFromXml;
        activeTime = activeTimeFromxml;
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public double ActiveTime
    {
        get { return activeTime; }
        set { activeTime = value; }
    }
enter code here

} //End Class
4

1 回答 1

1

你有这样的循环

for(int i = 0; i<10; i++)
{
    flipview.list.add(processfromxml(date+i));
    //Consider processfromxml() is returning a Ienumerable List
}

因此,如果要添加项目,FlipView则必须添加GridViewIEnumerable列表。您必须分配ItemsSource给特定GridView,然后将其添加GridViewFlipView.

这里我给你一个简单的例子

XAML

<Page.Resources>
    <DataTemplate x:Name="MyTemplate">
        <Border Background="DarkGray" Width="100" Height="100">
            <TextBlock Text="{Binding}" 
                       Foreground="White" 
                       HorizontalAlignment="Center" 
                       VerticalAlignment="Center"
                       FontSize="30"/>
        </Border>
    </DataTemplate>
</Page.Resources>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <FlipView x:Name="flipview" Height="500" Width="500"/>
</Grid>

C#

List<SolidColorBrush> colors;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    colors = new List<SolidColorBrush> 
    {
        new SolidColorBrush(Windows.UI.Colors.Red),
        new SolidColorBrush(Windows.UI.Colors.Gainsboro),
        new SolidColorBrush(Windows.UI.Colors.BlanchedAlmond),
        new SolidColorBrush(Windows.UI.Colors.Turquoise),
        new SolidColorBrush(Windows.UI.Colors.Azure),
        new SolidColorBrush(Windows.UI.Colors.Teal),
        new SolidColorBrush(Windows.UI.Colors.Tan),
        new SolidColorBrush(Windows.UI.Colors.PowderBlue),
        new SolidColorBrush(Windows.UI.Colors.WhiteSmoke),
        new SolidColorBrush(Windows.UI.Colors.SeaGreen)
    };
    for (int i = 0; i < 10; i++)
    {
        flipview.Items.Add(AddNewGridview(i));
    }
}

int i = 1, j = 0;
GridView AddNewGridview(int k)
{
    var gv = new GridView();
    gv.Background = colors[k];
    gv.ItemTemplate = this.Resources["MyTemplate"] as DataTemplate;
    List<int> IDs = new List<int>();
    while(i < 17 + j)
    {
        IDs.Add(i);
        i++;
    }
    j = i - 1;
    gv.ItemsSource = IDs;
    return gv;
}
于 2013-04-08T11:32:10.557 回答