Как изменить заголовок расширителя WPF datagrid в соответствии со значениями в группе, к которой относится расширитель?
Привет,
Я использую
CollectionViewSource
в качестве ItemSource для WPF DataGrid для заполнения и группировки DataGrid: (я заполняю его данными из базы данных)dataTable = new CollectionViewSource { Source = Global.dsAuftraege.Tables[0] }; dataTable.GroupDescriptions.Add(new PropertyGroupDescription("Auftragsnummer"));
Для групп DataGrid я использую следующий стиль:
<Style x:Key="GroupStyle" TargetType="{x:Type GroupItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander x:Name="expander" IsExpanded="True" Background="LightBlue" Foreground="Black"> <Expander.Header> <DockPanel> <TextBlock Style="{StaticResource HeaderTextBlock}" x:Name="ExpanderHeader1" Text="{Binding Name}" Margin="5,0,0,0" Width="200"/> <TextBlock x:Name="ExpanderHeader2" FontWeight="Normal" Text="{Binding ItemCount}"/> <TextBlock x:Name="ExpanderHeader3" FontWeight="Normal" Text=""/> </DockPanel> </Expander.Header> <ItemsPresenter/> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style>
Как вы можете видеть, я использую Расширитель и Расширитель.Заголовок состоит из 3 текстовых блоков. И вот тут возникает моя проблема:
В базовой базе данных у меня есть столбец под названием "Состояние", содержащий целые числа от -1 до 2. Моя DataGrid также показывает эту колонку.
Теперь я хочу сделать то же самое. Расширитель.Заголовок тексты жирный когда внутри расширителей есть ряды Группа с
"State"==2
.Более того: я хочу, чтобы считать все строки внутри Группа с
"State"==2
и показывают количество в "ExpanderHeader3" элемент управления TextBlock.Что я уже пробовал:
Я пробовал разные подходы в XAML, но также и в коде позади.
код XAML:
Я пробовал разные триггеры, но не мог заставить его работать.
С фоновым кодом:
Я попытался получить доступ к расширителю в коде позади с помощью VisualTreeHelper, но это не сработало.
Я думаю, что это должно быть возможно решить в XAML, но так как я новичок в этом, я понятия не имею, как это сделать.
Я рад любому предложению.
Спасибо.