【发布时间】:2015-05-22 13:22:50
【问题描述】:
我正在使用 Flipview 和 DataTemplateSelector 来确定在运行时应用哪个 DataTemplate 来显示我的控件中的项目。
我有两个 DataTemplate,一个是静态的,第二个可以用于不确定数量的项目。
目前
我的第一个视图显示: - “这是一个测试 - 内容”
Followed by 18 other views 看起来像这样:
-“http://www.google.com/0”
-“http://www.google.com/1”
-“http://www.google.com/2”
- 以此类推,直到 17 点
我想要
项目“http://www.google.com/”被分组为3 on a view。
例如第二个视图会显示:
将显示第三个视图:
等等..
下面是我的代码:
FlipViewDemo.xaml
<Page.Resources>
<DataTemplate x:Key="FirstDataTemplate">
<Grid>
<TextBlock Text="{Binding Content}" Margin="10,0,18,18"></TextBlock>
</Grid>
</DataTemplate>
<DataTemplate x:Key="SecondDataTemplate">
<TextBox Text="{Binding Url}"></TextBox>
</DataTemplate>
<local:MyDataTemplateSelector x:Key="MyDataTemplateSelector"
FirstTextTemplate="{StaticResource FirstDataTemplate}"
SecondTextTemplate="{StaticResource SecondDataTemplate}">
</local:MyDataTemplateSelector>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<FlipView x:Name="itemGridView" ItemTemplateSelector="{StaticResource MyDataTemplateSelector}"
Margin="265,220,284,162">
</FlipView>
</Grid>
FlipViewDemo.xaml.cs
public sealed partial class FlipViewDemo : Page
{
public FlipViewDemo()
{
this.InitializeComponent();
var items = new List<BaseClass>();
items.Add(new FirstItem
{
Content="This is a test - Content"
});
for (int i = 0; i < 18; i++)
{
items.Add(new SecondItem
{
Url = "http://www.google.com/ " + i.ToString()
});
}
itemGridView.ItemsSource = items;
}
}
public class BaseClass
{
}
public class FirstItem : BaseClass
{
public string Content { get; set; }
}
public class SecondItem : BaseClass
{
public string Url { get; set; }
}
public class MyDataTemplateSelector : DataTemplateSelector
{
public DataTemplate FirstTextTemplate { get; set; }
public DataTemplate SecondTextTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item,
DependencyObject container)
{
if (item is FirstItem)
return FirstTextTemplate;
if (item is SecondItem)
return SecondTextTemplate;
return base.SelectTemplateCore(item, container);
}
}
我想也许这可以通过组和列表视图来实现。但我不确定如何做到这一点。
这可能是一个愚蠢的问题,但使用谷歌,我找不到答案。英语也不是我的母语;请原谅打字错误。
【问题讨论】:
标签: c# .net wpf xaml windows-runtime