将FlipView与GridView绑定

时间:2013-04-08 10:31:33

标签: c# xaml microsoft-metro flipview

我有一个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一样,每天都会显示一个gridview。

喜欢的东西

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

1 个答案:

答案 0 :(得分:1)

你有这样的循环

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

因此,如果您要在FlipView中添加项目,则必须添加GridView而不是IEnumerable列表。您必须将ItemsSource分配给特定GridView,然后将GridView添加到FlipView

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

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;
}