Не могу использовать ItemTemplateSelector с Flipview
Я пытаюсь использовать ItemTemplateSelector с Flipview таким же образом, как я бы использовал ItemTemplateSelector с Listview, но он не работает, и я не могу найти примеров того, как использовать один с 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.
1 ответ
Решение
После поисков и выяснения некоторых вещей, я обнаружил, что в функции SelectTemplateCore чего-то не хватает. Это должно выглядеть так:
protected override DataTemplate SelectTemplateCore(object item,DependencyObject container)
не уверен почему.