#c# #wpf #mvvm #telerik #radgridview
#c# #wpf #mvvm #telerik #radgridview
Вопрос:
Наличие GridViewDataColumn
witch имеет привязку к IsVisible
свойству и агрегатной функции, установка IsVisible="False"
не скрывает агрегатную функцию в заголовке группы:
<telerik:GridViewDataColumn Header="Title"
IsVisible="{Binding IsVisibleProperty}"
DataMemberBinding="{Binding SomeProperty}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<telerik:SumFunction Caption="Some Caption: "/>
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
Ответ №1:
Мое решение состояло в том, чтобы выполнять следующий код каждый раз, IsVisible
когда свойство столбца менялось:
foreach (var col in GridWithAggregateFunctions.Columns)
{
if (!col.IsVisible)
{
foreach (var func in col.AggregateFunctions.ToList())
{
col.AggregateFunctions.Remove(func);
}
}
}
Ответ №2:
Существует связанная с этим проблема отображения только одной из агрегатных функций в заголовке группы на форумах Telerik. Ответ там также применим к вашей проблеме, поскольку это, по сути, та же проблема.
Что касается структуры шаблона и внутренней логики
GridViewGroupRow
, вы не можете предопределить это поведение таким образом. Если вы посмотрите на шаблон по умолчаниюGridViewGroupRow
, вы можете увидеть элементAggregateResulsList
, который отображает результаты агрегатных функций. Эта часть внутренне обрабатывает агрегаты, и нет способа «указать» ей отображать только первую функцию в заголовке и игнорировать остальные.
Следовательно, вы не можете скрыть отдельные агрегатные функции, но вы скрываете только все.
Однако вы можете скрыть все агрегаты, создав простой стиль, на который нацелен,
GridViewGroupRow
и присвоивShowHeaderAggregates
свойству значениеFalse
, как показано ниже:<Style TargetType="{x:Type telerik:GridViewGroupRow}"> <Setter Property="ShowHeaderAggregates" Value="False"/> </Style>
Комментарии:
1. Вы абсолютно правы, вы не можете увидеть это в моем предоставленном коде, но у меня было несколько агрегатов, и я стремился показывать их только в том случае, если столбец виден.