WPF:如何仅绑定到集合中的一个项,而不使用ItemsControl,因为我不想显示所有项

WPF:如何仅绑定到集合中的一个项,而不使用ItemsControl,因为我不想显示所有项,wpf,xaml,data-binding,datatemplate,Wpf,Xaml,Data Binding,Datatemplate,我有这样一个要求,我有一个项目集合ObservableCollection,但我只想显示第一个项目。这个需求来自这样一个事实:在大多数情况下,集合只包含一个项。由于篇幅的限制,即使收藏中有不止一件物品,我们也希望展示物品的数量、第一件物品的详细情况以及与先前情况相同的展示以及。。。向用户指示有更多项目的符号。当鼠标停留在UI元素上时,弹出窗口将最终显示所有项目 我能想到的第一个解决方案请建议其他人,如果他们更好的话,是绑定到此集合,但不使用ItemsControl并定义DataTemplateS

我有这样一个要求,我有一个项目集合ObservableCollection,但我只想显示第一个项目。这个需求来自这样一个事实:在大多数情况下,集合只包含一个项。由于篇幅的限制,即使收藏中有不止一件物品,我们也希望展示物品的数量、第一件物品的详细情况以及与先前情况相同的展示以及。。。向用户指示有更多项目的符号。当鼠标停留在UI元素上时,弹出窗口将最终显示所有项目

我能想到的第一个解决方案请建议其他人,如果他们更好的话,是绑定到此集合,但不使用ItemsControl并定义DataTemplateSelector派生类,该类返回DataTemplate以仅显示一个项,或者返回DateTemplate,该类具有。。。以及根据集合中的项目数显示更多详细信息的弹出窗口,并将其用作ContentTemplateSelector

但现在我的问题是:我的两个数据模板在XAML中是什么样子的,这样它们就只能显示集合中的第一个项目了?显然,我不能拥有ItemsControl

更新:

现在我已经设法让它工作,并同意这个问题可以关闭我不能删除它了,因为已经有一些答案

我实际上知道如何绑定到集合中的某个项目,但这并不是我感到困惑的地方。我觉得我应该像一个答案所建议的那样使用ContentControl。但我认为,因为我需要绑定到整个集合,而不是单个索引项,并使用DataTemplateSelector根据集合中的项数选择适当的DataTemplate。代码如下所示:

<ContentControl Content="{Binding MyCollection}"
          ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
<DataTemplate>
   <TextBlock Text="{Binding [0].PropertyName}" />
<DataTemplate />
试试这个

<ContentControl Content="{Binding YourCollection[0]}">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"></TextBlock>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

要仅绑定到集合中的一个项,可以使用以下语法:

{Binding Items[0]}
或绑定到集合中单个项的属性:

{Binding Items[0].Property}
您可以在MSDN的页面上找到有关属性路径语法的更多信息。。。从链接页面:

•可以在应用索引器的属性名称后的方括号内指定属性的索引器。例如,子句Path=ShoppingCart[0]将绑定设置为与属性的内部索引如何处理文本字符串0相对应的索引。还支持多个索引器


好吧,派对迟到了,但我想我还是分享我的2美分吧:我最好使用更愚蠢的XAML视图和更接近您演示需要的视图模型


翻译:与其将现有视图模型或原始数据及其项集合直接映射到视图,我建议将其映射到适当的视图模型,显示类似于YourItemViewModel FirstItem属性和bool HasMore属性的内容。第二个视图模型可以很容易地进行单元测试,以确保其性能良好,并且可以很容易地映射到逻辑较少的视图,从而避免视图中可能出现的难以测试的问题。

如果这些答案中的一个帮助您解决了问题,请接受它,以便将此问题标记为已回答。