【问题标题】:Binding a FlipView with GridView将 FlipView 与 GridView 绑定
【发布时间】:2013-04-08 10:31:33
【问题描述】:

我有一个与数据源完美结合的 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

【问题讨论】:

    标签: c# xaml microsoft-metro flipview


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      相关资源
      最近更新 更多