我正在使用Combobox来显示两个不同列表的内容,List< Production>制作和列表< Seasons>季节。以下是XAML代码
<StackPanel Grid.Column=" 1" Grid.Row="2">
<ComboBox x:Name="comboBox" ItemsSource="{Binding ShowProductionsSeasonsNames}" SelectedItem="{Binding SelectedProductionsSeasons}">
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontWeight="Bold" FontSize="14"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
这是viewmodel中的代码。
public ListCollectionView ShowProductionsSeasonsNames
{
get
{
List<ProductionsSeasonsNames> items = new List<ProductionsSeasonsNames>();
foreach (var production in this.Productions)
{
items.Add(new ProductionsSeasonsNames() { Name = production.DisplayName, Category = "Productions" });
}
foreach (var seasons in this.Seasons)
{
items.Add(new ProductionsSeasonsNames() { Name = seasons.DisplayName, Category = "Seasons" });
}
ListCollectionView lcv = new ListCollectionView(items);
lcv.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
return lcv;
}
}
public class ProductionsSeasonsNames
{
public string Name { get; set; }
public string Category { get; set; }
}
我的问题是部分有效。虽然我的作品和季节列表每个包含大约100个项目,但在堆叠面板中,每个列表只显示15个。此外,当我向下或向上滚动时,焦点直接转到每个标题的顶部,而不让我实际滚动(很抱歉,我无法更好地解释这部分)。有没有人对此有任何想法?
答案 0 :(得分:0)
使用Grid而不是Stackpanel并设置网格高度=&#34; *&#34;或者你可以直接将你的组合框放入Grid.Column =&#34; 1&#34; Grid.Row =&#34; 2&#34;