是否可以将一个列表框(或具有SelectedItem的其他控件)绑定到ICollectionView,显示如下所示的项:
用作CollectionViewSource视图源的类:
public class Item
{
public string Name { get; set; }
public string Parent { get; set; }
}
Item1和Item2将ParentName属性设置为null,Item3和Item4将“ParentName1”设置为ParentName属性,依此类推。
我非常喜欢列表框方法,因为只能选择项目,不能选择组。但我可能走错了路。
答案 0 :(得分:5)
最后,如果group为null,我实现了一个样式选择器来设置组样式:
public class NullGroupStyleSelector : StyleSelector
{
public Style NullGroupStyle { get; set; }
public Style DefaultStyle { get; set; }
public override Style SelectStyle(object item, DependencyObject container)
{
var element = container as FrameworkElement;
var group = item as CollectionViewGroup;
if (element != null && group != null && group.Name == null)
{
return this.NullGroupStyle;
}
return this.DefaultStyle;
}
}
和带有模板的组样式:
<Style TargetType="{x:Type GroupItem}" x:Key="NoGroupHeaderStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border Grid.Row="0">
<!-- group name -->
</Border>
<ItemsPresenter Grid.Row="1" Margin="20,0,0,0" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>