我有一個充當電話簿的字典。它使用字母表中的一個字符作為鍵,并使用可觀察的類集合作為值。這些類包括 FirstName、LastName 等屬性...
看起來像這樣
Dictionary<char,ObservableCollection<NameClass>> NameDictionary
目標是能夠將此字典用作串列框的專案源,并將鍵插入串列框,然后插入該特定鍵的可觀察集合中的每個 NameClass.FirstName。
這是我目前擁有的精簡版 DataTemplate
<DataTemplate x:Key="HeaderTemplate" >
<TextBlock Text="{Binding Key}"/>
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
這是使用 DataTemplate 和 NameDictionary 作為源的 ListBox。
<ListBox x:Name="NameList"
Style="{StaticResource ListStyle}"
ItemContainerStyle="{StaticResource ContainerStyle}"
ItemsPanel="{StaticResource PanelTemplate}"
ItemTemplate="{StaticResource HeaderTemplate}"
ItemsSource="{Binding NameDictionary, IsAsync=True}"
SelectedValue="{Binding ItemIndex}"
SelectedValuePath="Key">
我目前擁有的 xaml 會將密鑰和 ObservableCollection 插入到串列框中,但我希望它插入 ObservableCollection 內的所有專案,而不是集合本身。
對于一個視覺示例,我想做一些看起來像這樣的東西
Char
NameClass.FirstName
NameClass.FirstName
NameClass.FirstName
Char
NameClass.FirstName
NameClass.FirstName
NameClass.FirstName
但是目前插入的是這個
Char
ObservableCollection
Char
ObservableCollection
Char
ObservableCollection
我更愿意為此使用 xaml,而不是后面的代碼。我認為這并不太難,我將不勝感激。
uj5u.com熱心網友回復:
您的“HeaderTemplate”無法編譯,因為它缺少一個承載多個元素的面板。也就是說,您可以將其修改為托管另一個ListBox要系結的 ItemsSource,Value如下所示。
<DataTemplate x:Key="HeaderTemplate">
<StackPanel>
<TextBlock Text="{Binding Key}"/>
<ListBox ItemsSource="{Binding Value}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/463130.html
