I try to build an UI element witch is a ComboBox with group.
I'm almost done, here how I do it.
The data context implements this:
public interface ISelectionEditorViewModel : IEditorViewModel
{
IEnumerable<ISelectionItemViewModel> AvailableItems { get; }
ISelectionItemViewModel SelectedItem { get; set; }
}
Where ISelectionItemViewModel
is:
public interface ISelectionItemViewModel
{
string Group { get; }
string Label { get; }
...
}
My xaml looks like this:
<UserControl.Resources>
<CollectionViewSource x:Key="GroupedData" Source="{Binding Path=AvailableItems}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Group"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</UserControl.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource GroupedData}}" SelectedValue="{Binding Path=SelectedItem}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="vm:ISelectionItemViewModel">
<TextBlock Text="{Binding Path=Label}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
It's works like a charm.
But in some cases my items are not in any group. That it, for all item the group is null
.
In this case, all items are still grouped. But the group label is empty.
I try to get out of it by using a HeaderTemplateSelector
in GroupStyle
. The result is that if all items have null
for group, the header will not be shown. I just have a list of items with no group. Ok nice.
But I still have an issue, the items are not left aligned !! I would like to have this:
Aucun commentaire:
Enregistrer un commentaire