Видимость агрегированной функции GridViewDataColumn

#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. Вы абсолютно правы, вы не можете увидеть это в моем предоставленном коде, но у меня было несколько агрегатов, и я стремился показывать их только в том случае, если столбец виден.