Не могу использовать 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)

не уверен почему.

Другие вопросы по тегам