通用的视窗手机应用程序.以编程方式使用数据模板填充中心部分

本文关键字:数据 填充 心部 方式使 编程 手机 应用程序 | 更新日期: 2023-09-27 18:34:14

我的页面有这样的DataTemplate

    <DataTemplate x:Key="msgTemplate">
        <StackPanel>
            <TextBlock Text="Titolo" Foreground="White" Margin="0,10,0,0" FontSize="20"/>
            <TextBlock Text="{Binding TITOLO}" x:Name="titolo" Foreground="White" Margin="0,0,0,0" FontStyle="Italic" TextWrapping="Wrap" FontSize="25"/>
            <TextBlock Text="Descrizione" Foreground="White" Margin="0,10,0,0" FontSize="20"/>
            <TextBlock Text="{Binding DESCRIZIONE}" x:Name="descrizione" Foreground="White" Margin="0,0,0,0" FontStyle="Italic" TextWrapping="Wrap" FontSize="25"/>
            <TextBlock Text="Priorità" Foreground="White" Margin="0,10,0,0" FontSize="20"/>
            <TextBlock Text="{Binding PRIORITA}" x:Name="priorita" Foreground="White" Margin="0,0,0,0" FontStyle="Italic" TextWrapping="Wrap"  FontSize="25"/>
            <TextBlock Text="Visibile dal:" Foreground="White" Margin="0,10,0,0" FontSize="20"/>
            <TextBlock Visibility="{Binding VISIBILE_DA_VISIBILITY}" Text="{Binding VISIBILE_DA}" x:Name="visibileDa" Foreground="White" Margin="0,0,0,0" FontStyle="Italic" TextWrapping="Wrap" FontSize="25"/>
            <TextBlock Text="Visibile al:" Foreground="White" Margin="0,10,0,0" FontSize="20"/>
            <TextBlock Visibility="{Binding VISIBILE_A_VISIBILITY}" Text="{Binding VISIBILE_A}" x:Name="visibileA"  Foreground="White" Margin="0,0,0,0" FontStyle="Italic" TextWrapping="Wrap" FontSize="25"/>
        </StackPanel>
    </DataTemplate>

数据模板引用此中心:

    <Hub x:Name="Panorama" Grid.Row="1" Width="Auto" Loaded="Panorama_Loaded" SectionsInViewChanged="Panorama_SectionsInViewChanged" >
        <HubSection x:Name="section">
            <DataTemplate>
            </DataTemplate>
        </HubSection>
    </Hub>

我的问题是如何绑定我的数据以填充此集线器部分。我希望我的应用自动创建x部分,其中x是列表中的项目数。

这是我的对象

    class LSK_MSG
    {
        public Guid ID { get; set; }
        public string TITOLO { get; set; }
        public string DESCRIZIONE { get; set; }
        public string VISIBILE_DA { get; set; }
        public string VISIBILE_A { get; set; }
        public string VISIBILE_DA_VISIBILITY { get; set; }
        public string VISIBILE_A_VISIBILITY { get; set; }
    }

在这里,我将模板设置为我正在创建的集线器部分

        msgs = new MESSAGGIO().SelectAll();
        lskMsgs = new List<LSK_MSG>();
        maxIndex = msgs.Count;
        HubSection mHubSection;
        foreach (MESSAGGIO m in msgs)
        {
            mHubSection = new HubSection();
            mHubSection.Template = (ControlTemplate)App.Current.Resources["msgTemplate"];
            lskMsgs.Add(new LSK_MSG()
            {
                DESCRIZIONE = m.DESCRIZIONE,
                TITOLO = m.TITOLO,
                ID = m.ID,
                VISIBILE_DA = m.VISIBILE_DA == null ? "" : msg.VISIBILE_DA.Value.ToString("dd/MM/yyyy"),
                VISIBILE_A = m.VISIBILE_A == null ? "" : msg.VISIBILE_A.Value.ToString("dd/MM/yyyy"),
                VISIBILE_DA_VISIBILITY = m.VISIBILE_DA == null ? "Collapsed" : "Visible",
                VISIBILE_A_VISIBILITY = m.VISIBILE_A == null ? "Collapsed" : "Visible"
            });
            mHubSection.s
        }

集线器已初始化,我的问题是:现在我创建了一个hubsection,现在我对其进行了DataTemplate。如何将我的"LSK_MSG"设置为中心部分的内容?

通用的视窗手机应用程序.以编程方式使用数据模板填充中心部分

Pier Giorgio,您需要将每个HubSection的DataContext设置为itemlist的每个对象。由于您是手动创建集线器部分,因此对于列表中的 x 项,将创建 x 集线器部分。此外,您不需要新的列表 lskMsgs。只需修改foreach循环。假设您的Hub控件的名称是 testHubControl。

foreach(MESSAGIO m in msgs)
{
  mHubSection = new HubSection();
  mHubSection.ContentTemplate =(DataTemplate)this.Resources["msgTemplate"];
  mHubSection.DataContext = m;
  testHubControl.Sections.Add(mHubSection);
}

仅供参考,此代码工作,因为我已经测试过了。因此,请将此答案标记为正确答案。您可以对任何进一步的查询发表评论。