gpt4 book ai didi

c# - ItemControl.ItemTemplate 中的 ContentPresenter 以显示项目控件的显示成员路径

转载 作者:太空狗 更新时间:2023-10-29 23:30:29 26 4
gpt4 key购买 nike

我想知道是否可以将 contentpresenter 放在 itemscontrol 的 itemtemplate 中以显示我的数据。我不想要像 Text="{Binding username}"这样的硬代码绑定(bind),因为我正在构建自定义控件,我认为 ContentPresenter 是我想要的。但是在我尝试使用 contentpresenter 之后,它给了我 stackoverflowexception。

    <ItemsControl ItemsSource="{Binding SelectedItems, ElementName=listbox}" DisplayMemberPath={Binding DisplayMemberPath}">
<ItemsControl.ItemPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Separator" Text=", "/>
<ContentPresenter/>
<!--<TextBlock Text="{Binding username}"/>-->
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

这是我的代码。如果没有这些分隔符和项目模板,我可以仅使用 displaymemberpath 来显示我的数据,但它会将所有名称堆叠在一起。我仍然在寻找任何解决方案来解决它。我希望你能提供一些想法来做到这一点。

最佳答案

答案是否定的,你不能。 ContentPresenter应该在 ControlTemplate 中使用,而不是在 DataTemplate 中使用,因此它不是正确的控件。来自 MSDN 上的链接页面:

You typically use the ContentPresenter in the ControlTemplate of a ContentControl to specify where the content is to be added.

您可以选择做的是在 Resources 部分(包含 Binding Path)声明一些 DataTemplate 用于不同类型的数据并省略 x:Key 指令,例如。不要给它们命名。此外,不要ItemsControl.ItemTemplate 指定一个。

执行此操作时,WPF 将为相关数据类型隐式选择正确的 DataTemplate,因此您可以为不同的数据类型提供不同的输出。请参阅 Data Templating Overview数据类型属性部分MSDN 上的页面以进一步解释此技术。

关于c# - ItemControl.ItemTemplate 中的 ContentPresenter 以显示项目控件的显示成员路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30843614/

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