gpt4 book ai didi

c# - ItemTemplateSelector 不适用于没有绑定(bind)的 ListView

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:13 27 4
gpt4 key购买 nike

我有一个 ListView,我在后面的代码中以编程方式设置了它的 ItemsSource。以前我只有一个模板,现在我想使用多个模板,根据我添加到ListView的项目来选择模板。

这是我的 XAML 代码:

<Page.Resources>
<local:TemplateSelector x:Key="myTemplateSelector" TemplateA="{StaticResource TemplateA}" TemplateB="{StaticResource TemplateB}" />

<!-- TemplateA and TemplateB -->
</Page.Resources>

<ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplateSelector="{StaticResource myTemplateSelector}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>

然后我设置 ListView 的 ItemSource,这是我的 TemplateSelector:

  public class TemplateSelector : DataTemplateSelector
{
public DataTemplate TemplateA { get; set; }
public DataTemplate TemplateB { get; set; }

public new DataTemplate SelectTemplate(object item, DependencyObject container)
{

return TemplateA;
}
}

但是,这不起作用。我总是为每个项目获取相同的文本,而不是我想要的模板:AppName.ViewModels.ViewModel1(我想显示的数据类型)。

过去,当我只有一个项目模板时,我在 xaml 中使用了它并且它有效:

        <ListView
x:Name="MasterListView"
Grid.Row="1"
ItemContainerTransitions="{x:Null}"
ItemTemplate="{StaticResource TemplateA}"
IsItemClickEnabled="True"
ItemClick="MasterListView_ItemClick"/>

如何让 ItemTemplateSelector 工作?我在那里放置了断点,但它甚至没有被调用。

最佳答案

DataTemplateSelector.SelectTemplate(Object, DependencyObject) method备注中所述:

App code typically doesn't call SelectTemplate methods; the methods exists so that the infrastructure can call it while choosing the correct templates based on using a DataTemplateSelector instance from a property value such as ItemsControl.ItemsTemplateSelector. To provide a specific template in a derived class, override the SelectTemplateCore(Object, DependencyObject) method.

所以我们应该使用

protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)

代替

public new DataTemplate SelectTemplate(object item, DependencyObject container)

关于c# - ItemTemplateSelector 不适用于没有绑定(bind)的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com