无法将 ItemTemplateSelector 与 Flipview 一起使用
Cant use ItemTemplateSelector with 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 的情况下正常绑定到集合。
在进行了更多搜索并尝试了一些东西之后,我发现 SelectTemplateCore 函数缺少一些东西。
它需要看起来像这样:
protected override DataTemplate SelectTemplateCore(object item,DependencyObject container)
不知道为什么。
我正在尝试将 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 的情况下正常绑定到集合。
在进行了更多搜索并尝试了一些东西之后,我发现 SelectTemplateCore 函数缺少一些东西。 它需要看起来像这样:
protected override DataTemplate SelectTemplateCore(object item,DependencyObject container)
不知道为什么。