У нас есть эта концепция в нашем программном обеспечении, называемая «Пользовательские поля».По сути, мы генерируем элементы управления во время выполнения на основе пользовательской конфигурации.В настоящее время я переписываю код, который генерирует элементы управления для использования функций в WPF.Я также использую DynamicData.
У меня есть SourceCache
типа CustomField
.Каждый CustomField
имеет объект с именем CategoryGroup
, который включает в себя параметр Name
.Я хочу использовать это как группировку в моем ItemsControl
и отобразить Name
жирным шрифтом.
Вот цепочка DynamicData:
_customFields.Connect()
.Group(x => x.Category.CategoryGroup)
.Transform(x => new CustomFieldGroup(x))
.ObserveOn( RxApp.MainThreadScheduler )
.Bind( out _customFieldGroups )
.Subscribe()
.DisposeWith(d);
А вот CustomFieldGroup
:
public class CustomFieldGroup : ObservableCollectionExtended<CustomField>
{
public string Name { get; set; }
public CustomFieldGroup(IGroup<CustomField, Guid, CategoryGroup> customFieldsByGroup)
{
Name = customFieldsByGroup.Key.Name;
AddRange( customFieldsByGroup.Cache.Items);
}
}
Пока все хорошо.Однако, хотя я добавил ItemsControl.GroupStyle
, он не использует элементы пользовательского интерфейса группы.Вот мой xaml:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Content="Item" />
<TextBlock Grid.Column="1" Text="{Binding}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.GroupStyle>
<GroupStyle HidesIfEmpty="False">
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Content="Group" />
<TextBlock FontSize="14" FontWeight="SemiBold" Text="{Binding Name}" />
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ItemsControl.GroupStyle>
</ItemsControl>
Когда я смотрю на вывод, он просто использует ItemTemplate
:
Такочевидно я что-то упускаю.Могу ли я сделать это с DynamicData?