HubControl:Windows Phone 8.1上每个集线器部分的不同文件

时间:2015-01-04 15:35:52

标签: xaml windows-phone-8.1

我找不到任何有关如何更好地构建hubControl的信息。我能找到的所有示例都将所有信息放在一个 xaml文件中。我错过了什么吗?我不认为这会为您提供易于维护的代码。集线器模板创建以下代码(在第一部分缩写之后停止,但示例代码中还有四个部分):

<Grid x:Name="LayoutRoot">
        <Hub x:Name="Hub" x:Uid="Hub" Header="application name" Background="{ThemeResource HubBackgroundImageBrush}">
            <HubSection x:Uid="HubSection1" Header="SECTION 1" DataContext="{Binding Groups}" HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}">
                <DataTemplate>
                    <ListView
                        ItemsSource="{Binding}"
                        IsItemClickEnabled="True"
                        ItemClick="GroupSection_ItemClick"
                        ContinuumNavigationTransitionInfo.ExitElementContainer="True">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Margin="0,0,0,27.5">
                                    <TextBlock Text="{Binding Title}" Style="{ThemeResource ListViewItemTextBlockStyle}" />
                                </StackPanel>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </DataTemplate>
            </HubSection>

如何将每个部分放在不同的xaml文件中?

还有其他方法可以获得更好的代码结构吗?

我通过在代码中添加数据透视表项来实现类似于此的内容,但是中心控件没有内容属性,而且内容模板的混乱看起来有点太难看了。有没有人有想法?提前谢谢。

2 个答案:

答案 0 :(得分:1)

虽然我仍然在某些情况下传递数据上下文/ viewModel,我想简单的解决方案是创建一个新文件(用户控件或页面)并使用类似

的内容
<HubSection Header="About">
    <DataTemplate>
        <local:AboutPage />
    </DataTemplate>
</HubSection>

感谢所有看过的人!

答案 1 :(得分:0)

我认为您正在寻找的是DataTemplateSelector。这允许您在代码中编写从实例到模板的自定义映射。