首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用扩展器在ListView中调整列大小无效

使用扩展器在ListView中调整列大小无效
EN

Stack Overflow用户
提问于 2019-04-23 01:03:39
回答 1查看 32关注 0票数 1

我注意到了非常奇怪的行为。实际上有两个问题。看看这个gif:

在左侧有一个带有组的ListView。右边是一个没有gropus的ListView。这是相同的代码。不同之处在于,当满足某个条件时,就会创建组。

现在,第一件事。看看字体颜色。在没有分组的ListView中,有一个默认的蓝色。在带有组的ListView中,字体是黑色的。

第二件事。查看列大小调整。在没有组的ListView中,一切都按预期工作。但是在ListView with group中,有一些奇怪的事情在发生。当我增加Name列时,Limit列值会在某个阶段消失。整个内容都在移动。

我试图将ListView更改为DataGrid,但结果更糟。那么,这里会有什么问题呢?

这是我的小组的风格:

代码语言:javascript
复制
<Style TargetType="{x:Type GroupItem}" x:Key="CategoryStyle">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Name.IsDefault}" Value="False">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Expander IsExpanded="True" Width="200">
                                <Expander.Header>
                                    <DockPanel Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=ActualWidth}">
                                        <Button DockPanel.Dock="Right" Style="{StaticResource RoundBtnStyle}" Content="+" 
                                                Margin="0,0,28,0" Width="20" Height="20"
                                                Tag="{Binding}"
                                                Command="{Binding DataContext.AddItemToCategoryCommand, RelativeSource={RelativeSource AncestorType={x:Type app:DocumentControl}}}"
                                                CommandParameter="{Binding Name}"
                                                />

                                        <TextBlock Text="{Binding Name}" 
                                                   FontWeight="Bold" 
                                                   FontSize="22" 
                                                   VerticalAlignment="Bottom" 
                                                   Opacity="0.5" />
                                    </DockPanel>

                                </Expander.Header>
                                <ItemsPresenter />
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>            
    </Style>

这是我的ListView简化版代码:

代码语言:javascript
复制
<ListView Name="listView" ItemsSource="{Binding Source={StaticResource items}}"
              MouseDoubleClick="ListView_MouseDoubleClick"
              >
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSpentOverLimit}" Value="True">
                        <Setter Property="Background" Value="Maroon"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="ToolTip">
                            <Setter.Value>
                                <StackPanel Orientation="Horizontal" Margin="5">
                                    <TextBlock Text="{app:Localize SpentOverLimitHint}" Margin="0,0,5,0"/>
                                    <TextBlock Text="{Binding SpentOverLimit, Converter={StaticResource MoneyConverter}}"/>
                                </StackPanel>
                            </Setter.Value>
                        </Setter> 
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>

        <!-- Columns -->
        <ListView.View>
            <GridView AllowsColumnReorder="False" x:Name="gridView">
                <GridViewColumn Header="{app:Localize Column_Name}" Width="150" DisplayMemberBinding="{Binding Name}"/>
            </GridView>
        </ListView.View>

        <!-- Categories -->
        <ListView.GroupStyle>
            <GroupStyle ContainerStyle="{StaticResource CategoryStyle}" />
        </ListView.GroupStyle>
</ListView>

最后是CollectionViewSource:

代码语言:javascript
复制
<CollectionViewSource Source="{Binding Items}" x:Key="items">
        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="ParentCategory"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 03:26:37

您的字体颜色没有在您发布的XAML样式中设置,因此这意味着它是由父对象继承的,或者是您的问题中没有发布的样式。

GroupItem的大小调整问题是由控件模板中的以下行引起的:

代码语言:javascript
复制
<Expander IsExpanded="True" Width="200">

你已经为你的扩展器元素硬编码了宽度' 200‘,这导致当它们的大小小于200时,它会覆盖其他网格列,使得事情看起来有点奇怪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55798101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档