我试图以flipView的方式使用ItemTemplatesEleter,就像我使用listView的ItemTemplateSelector相同,但它不起作用,我找不到任何示例flipview。
这是我的XAML:
<Page.Resources>
<DataTemplate x:Key="textview">
<TextBlock Text="{Binding textstring}" FontSize="140"/>
</DataTemplate>
<DataTemplate x:Key="imgview">
<Image Source="{Binding imageurl}" />
</DataTemplate>
<local:flipviewselector x:Key="myselector"
imageview="{StaticResource imgview}"
stringview="{StaticResource textview}"/>
</Page.Resources>
<FlipView Name="flip"
ItemsSource="{Binding}"
ItemTemplateSelector="{StaticResource myselector}"/>
这是我的C#代码:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var source = new ObservableCollection<flipviewitem>();
source.Add(new flipviewitem("test1"));
source.Add(new flipviewitem("image", new Uri("http://theheightsanimalhospital.com/clients/15389/images/playful-kitten-6683.jpg")));
source.Add(new flipviewitem("test2"));
source.Add(new flipviewitem("test3"));
source.Add(new flipviewitem("test4"));
flip.DataContext = source;
}
}
public class flipviewselector : DataTemplateSelector
{
public DataTemplate imageview { get; set; }
public DataTemplate stringview { get; set; }
protected override DataTemplate SelectTemplateCore(object item)
{
flipviewitem decide = item as flipviewitem;
if (decide.imageurl != null)
{
return imageview;
}
return stringview;
}
}
public class flipviewitem
{
public flipviewitem(String text)
{
this.textstring = text;
}
public flipviewitem(String text, Uri url)
{
this.textstring = text;
this.imageurl = url;
}
public String textstring { get; set; }
public Uri imageurl { get; set; }
}
无需ItemTemplatesElector即可与集合的正常结合。
在搜索更多内容并提出一些事情后,我发现SelectTemplatecore funktion缺少某些东西。它需要看起来像这样:
protected override DataTemplate SelectTemplateCore(object item,DependencyObject container)
不确定为什么。