如何将ObservableCollection绑定到ListBox中的文本块

时间:2018-08-03 14:15:21

标签: c# wpf xaml

我有绑定到列表的ListBox。在列表中,我有一个名为“ AttributePath”的可观察集合。我正在努力的是如何将Textblock(用作工具提示)绑定到ObservableCollection“ AttributePath”。这是xmal-

        <ListBox 
            Name="lstCandidates" 
            ItemsSource="{Binding Path=UIProperties.CandidateAttributes}"
            SelectionMode="Extended"
            VirtualizingStackPanel.IsVirtualizing="True"
            VirtualizingStackPanel.VirtualizationMode="Recycling"
            >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=DisplayName}"/>
                        <StackPanel.ToolTip>
                            <StackPanel>
                                <TextBlock Text="{Binding UIProperties.CandidateAttributes.AttributePath}" />
                                <StackPanel Orientation="Horizontal">

                                    <TextBlock Text="Last updated: "/>
                                </StackPanel>
                            </StackPanel>
                        </StackPanel.ToolTip>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

失败的地方是带有{Binding UIProperties.CandidateAttributes.AttributePath}的行。只是不确定为文本块设置itemsource的语法。

1 个答案:

答案 0 :(得分:0)

直接绑定属性AttributePath

<StackPanel.ToolTip>
    <StackPanel>
        <TextBlock Text="{Binding AttributePath}" />
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Last updated: "/>
         </StackPanel>
    </StackPanel>
</StackPanel.ToolTip>

但是,如果AttributePath是集合,则可以使用ItemsControl来显示它:

<StackPanel.ToolTip>
        <StackPanel>
            <ItemsControl ItemsSource="{Binding AttributePath}">
               <ItemsControl.ItemTemplate>
                   <DataTemplate>
                       <TextBlock Text="{Binding}"/>
                   </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Last updated: "/>
             </StackPanel>
        </StackPanel>
    </StackPanel.ToolTip>

您还可以设置适当的ItemTemplate来决定如何在集合中显示项目。

相关问题