gpt4 book ai didi

c# - 如果设置了 ItemContainerStyle,则 DataTemplateSelector 不起作用

转载 作者:行者123 更新时间:2023-11-30 14:55:05 26 4
gpt4 key购买 nike

我有两个列表框,默认的和自定义的。一个正确使用 DataTemplateSelector 而另一个只使用默认的 DataTemplates 从不调用选择器;

//shows correctly
<ListBox Name="testlb" ItemTemplateSelector="{StaticResource ffDataTemplateSelector}"/>

//now showing correctly (using default DataTemplates instead of selector)
<local:FFBox x:Name="myFFBox" ItemTemplateSelector="{StaticResource ffDataTemplateSelector}" ItemContainerStyle="{StaticResource FFItemStyle}" />

两者来源相同

testlb.ItemsSource = CollectionViewSource.GetDefaultView(FileCollectionView);
myFFBox.ItemsSource = CollectionViewSource.GetDefaultView(FileCollectionView);

显然 DataTemplateSelector 没有任何问题,因为它在 teSTLb 上可以正常工作

问题是 ItemContainerStyle="{StaticResource FFItemStyle}" 我用它来定义每个 ListBoxItem 的整体外观,包含触发器、动画等。如果它存在,选择器将不起作用。

<Style x:Key="FFItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid x:Name="mygrid">
<ContentPresenter x:Name="ContentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"/>

如何在保留 ItemContainerStyle 的同时仍然能够使用 DataTemplateSelector 更改 DataTamplates?

编辑:已解决,我们应该保留它,因为这是 wpf 中那些不合逻辑且没有很好记录的事情之一。

最佳答案

明白了:如果您定义了 ItemContainerStyle,而不是 ItemTemplateSelector,则需要在 ContentPresenter 中使用 ContentTemplateSelector 和 DataTemplateSelector。

<ContentPresenter x:Name="ContentPresenter"  Content="{TemplateBinding  Content}"
ContentTemplateSelector="{StaticResource ffDataTemplateSelector}"

关于c# - 如果设置了 ItemContainerStyle,则 DataTemplateSelector 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145532/

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