C# WPF stackpanel不显示全部内容

C# WPF stackpanel不显示全部内容,c#,wpf,stackpanel,C#,Wpf,Stackpanel,我使用一个组合框来显示两个不同列表的内容,列表制作和列表季节。下面是XAML代码 <StackPanel Grid.Column=" 1" Grid.Row="2"> <ComboBox x:Name="comboBox" ItemsSource="{Binding ShowProductionsSeasonsNames}" SelectedItem="{Binding SelectedProductionsSeasons}">

我使用一个组合框来显示两个不同列表的内容,列表制作和列表季节。下面是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; }
}
public ListCollectionView ShowProductionsSeasonsNames
{
得到
{
列表项=新列表();
foreach(此.Productions中的var生产)
{
items.Add(new ProductionsSeasonsNames(){Name=production.DisplayName,Category=“Productions”});
}
foreach(本节中的变量季节。季节)
{
添加(新ProductionsSeasonsNames(){Name=seasons.DisplayName,Category=“seasons”});
}
ListCollectionView lcv=新的ListCollectionView(项目);
lcv.GroupDescriptions.Add(新属性GroupDescription(“类别”);
返回lcv;
}
}
公共类产品季节性SNAMES
{
公共字符串名称{get;set;}
公共字符串类别{get;set;}
}

我的问题是它部分地起作用。虽然我的作品和季节列表每个包含大约100个项目,但在stackpanel中,每个列表中只显示15个项目。此外,当我向下或向上滚动时,焦点直接转到每个标题的顶部,而不允许我实际滚动(很抱歉,我无法更好地解释这一部分)。有人对此有什么想法吗?

使用Grid而不是Stackpanel,并设置Grid height=“*”,或者您可以直接将组合框放入Grid.Column=“1”Grid.Row=“2”

如果您在一个非常空白的wpf应用程序中尝试它(您应该调试您的问题),则没有问题。在使用它的地方,你的布局肯定还有其他问题。你的数据网格可能有点混乱吗?可能是错误的行索引(以0等开头)?您是否为每行和每列指定了特定的高度/宽度?如果是,则应使用“*”使其成为动态的。