[英]Treeview shows random extra space
我在wpf中有一个treeview显示了一些奇怪的行为(至少我认为这很奇怪)。 我看不到任何可以附加图像的地方,但基本上在某些项目上看起来像是双倍行距或有额外的3px左右的边距,而在某些项目上看起来像是单行距。 这是定义它的XAML:
<TreeView Margin="5,0,0,5" ItemsSource="{Binding SortedCategories}" HorizontalContentAlignment="Stretch">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type COBie:CategoryData}" ItemsSource="{Binding SortedTypes}">
<CheckBox IsChecked="{Binding AnyChecked, Mode=TwoWay}" Content="{Binding CategoryName}" IsEnabled="{Binding HasTypes}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type COBie:InstanceData}">
<CheckBox IsChecked="{Binding isChecked, Mode=TwoWay}" Content="{Binding ElemID}" />
</DataTemplate>
<DataTemplate DataType="{x:Type COBie:TypeData}">
<TreeViewItem IsEnabled="{Binding HasInstances}" HorizontalContentAlignment="Stretch">
<TreeViewItem.Header>
<CheckBox IsChecked="{Binding isChecked, Mode=TwoWay}" Content="{Binding ElemName}" />
</TreeViewItem.Header>
<ListView ItemsSource="{Binding SortedInstances}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding isChecked, Mode=TwoWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding ElemID}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding ElemName}" />
<GridViewColumn Header="Mark" DisplayMemberBinding="{Binding Mark}" />
<GridViewColumn Header="Room" DisplayMemberBinding="{Binding RoomDisplay}" />
</GridView>
</ListView.View>
</ListView>
</TreeViewItem>
</DataTemplate>
</TreeView.Resources>
</TreeView>
唯一适用的其他相关样式是:
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
</Style>
我根本看不到任何定义边距的地方,即使它定义了所有元素都属于同一类,因此也应同样适用。
有人知道发生了什么吗?
我有一个同样的问题,那就是看似随机的差距。 仔细查看后,我发现名称之间带有下划线的项目之间出现了空白。
如果将字符串直接放在CheckBox的content属性中,并且包含下划线,则CheckBox将用一个名为AccessText的控件包围TextBlock,这可能支持快捷键(类似于Button的Content属性中的下划线)。
现在,由于某种原因,如果不涉及AccessText,则在TextBlock上设置Checkbox的边距就可以了,但是在AccessText内的TextBlock上没有设置Checkbox的边距。 这样,AccessText中的TextBlock将具有默认的TextBlock样式,在我的情况下是Margin = 5。
我想您的情况一定是一个密切相关的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.