使用分隔符填充剩余空间

问题描述

| 我敢肯定这很简单,但是我似乎无法弄清楚。 我有一个ListBox来显示项目,并且这些项目与DataTemplate一起显示。我现在想对这些项目进行分组,因此已基于制造商属性添加了一个分组。这是在后面的代码中完成的。
ICollectionView view = CollectionViewSource.GetDefaultView(Items);
PropertyGroupDescription groups = new PropertyGroupDescription(\"Manufacturer\");
view.GroupDescriptions.Add(groups);
我希望每个组都在扩展器中,以便可以将其隐藏。我可以通过查看MSDN上的GroupTemplates来完成这项工作。这涉及到拥有一个扩展器,文本块,然后使用分隔符来排除多余的空间,例如Windows Vista / 7组。如下。 我遇到的问题是我无法使分隔符正确填充剩余空间。如果使用MinWidth值,则所有扩展器的宽度都相同。如果我使用{binding ActualWidth,ElementName = MyListBox},则分隔符太宽,与包含它的控件一样宽。因此,它将滚动条设置为可见(请参见下面的屏幕截图)。如果我将宽度留为空白,则根本不会绘制分隔符。 我的直觉是,堆栈面板应该已经扩展分隔符以使用剩余的空间,但是没有。所以我尝试了下面的XamlCode中的DockPanel,但这也失败了。我还有其他一些问题,要通过使用适当的宽度来获取控件来填充剩余的空间,因此,如果您可以帮助我解决此问题,那就太好了。 我当前的WPF Xaml标记。您将需要添加元素以使其显示某些内容。
<Window
    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
    Title=\"MainWindow\" Height=\"350\" Width=\"525\">
<ScrollViewer VerticalScrollBarVisibility=\"Auto\">
    <StackPanel x:Name=\"myStackPanel\">
        <ListBox x:Name=\"MyListBox\">
            <ListBox.GroupStyle>
                <GroupStyle>
                    <GroupStyle.ContainerStyle>
                        <Style TargetType=\"{x:Type GroupItem}\">
                            <Setter Property=\"Template\">
                                <Setter.Value>
                                    <ControlTemplate TargetType=\"{x:Type GroupItem}\">
                                        <Expander IsExpanded=\"True\">
                                            <Expander.Header>
                                                <DockPanel HorizontalAlignment=\"Stretch\" 
                                                            VerticalAlignment=\"Stretch\" 
                                                            Height=\"Auto\" 
                                                            Width=\"{Binding ActualWidth,ElementName=MyListBox}\"
                                                            Margin=\"10\">
                                                    <TextBlock DockPanel.Dock=\"Left\" Margin=\"0\" FontSize=\"14\" FontWeight=\"Bold\" Foreground=\"Black\" Text=\"{Binding Path=Name}\"/>
                                                    <Separator DockPanel.Dock=\"Right\" Margin=\"4,4,0\"></Separator>
                                                </DockPanel>
                                            </Expander.Header>
                                            <ItemsPresenter Margin=\"5,0\" />
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </GroupStyle.ContainerStyle>
                </GroupStyle>
            </ListBox.GroupStyle>
            <ListBox.ItemTemplate>
                <DataTemplate>
                   <!-- Data Template Here -->
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</ScrollViewer>
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)