将FlipView与GridView绑定

本文关键字:绑定 GridView FlipView | 更新日期: 2023-09-27 18:07:56

我有一个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

将FlipView与GridView绑定

你有这样的循环

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