我找不到任何有关如何更好地构建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文件中?
还有其他方法可以获得更好的代码结构吗?
我通过在代码中添加数据透视表项来实现类似于此的内容,但是中心控件没有内容属性,而且内容模板的混乱看起来有点太难看了。有没有人有想法?提前谢谢。
答案 0 :(得分:1)
虽然我仍然在某些情况下传递数据上下文/ viewModel,我想简单的解决方案是创建一个新文件(用户控件或页面)并使用类似
的内容<HubSection Header="About">
<DataTemplate>
<local:AboutPage />
</DataTemplate>
</HubSection>
感谢所有看过的人!
答案 1 :(得分:0)
我认为您正在寻找的是DataTemplateSelector
。这允许您在代码中编写从实例到模板的自定义映射。