У меня есть древовидная структура в wpf, которая показывает странное поведение (по крайней мере, я думаю, это странно). Я не вижу нигде, где я могу прикрепить изображение, но в основном на некоторых элементах, на которые он похож, он имеет двойное расстояние или имеет дополнительный 3px или около того, и на некоторых он выглядит как однораздельный. Вот это XAML определение его:Treeview показывает случайное дополнительное пространство
<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>
Я не вижу где-нибудь, что определяет запас на всех, и даже если он сделал все элементы одного класса, поэтому они должны применяться ко всем одинаково.
Кто-нибудь знает, что происходит?
Также я прошел и проверил значения ElemName для элементов, которые были и не отображали дополнительное пространство, и не имеет дополнительных пробелов или строк в значении свойства ElemName (которое является тем, что отображается ... – sfaust
Ok Я до сих пор не понимаю, почему это происходит.Я пробовал жестко кодировать высоту флажка в заголовке, маржа осталась. Поскольку она действительно выглядит как маржа, я старался жестко кодировать маржу до 0, без изменений. но вместо того, чтобы использовать Content = {Binding ElemName} в определении флажка, я расширил его до , и это выглядит нормально. Я не уверен, почему, но это работал ... Если кто-то может пролить свет на то, почему второй работал, а не первый, я буду отмечать его как ответ ... –
sfaust