Я запутался, пытаясь связать некоторые свойства, размещенные внутри коллекции, а не свойства элементов. Я даже не знаю, как выразить это правильно ... код может лучше объяснить: вот типы (не фактический код, я укоротить его основы):Привязка к объектам коллекции DatagridSource вместо отдельных элементов
public class myType
{
public int P {get;set;}
}
public class myTypeCollection : ObservableCollection<myType>
{
public int Ptotal {get { return this.Items.Select(i=>i.P).Aggregate((c,t)=>t = t + c); }}
public int Pmin { get { this.Items.Min(i => i.P); } } //concept
public int Pmax { get { this.Items.Max(i => i.P); } } //concept
}
Они быть используется в шаблонном управлении, чей XAML выглядит следующим образом: (добавление комментариев, чтобы сделать это ясно, как я в состоянии)
<!-- myGridObject = new myTemplatedControl(); -->
<!-- myGridObject.DataContext = new myTypeCollection(); -->
<!-- NOTE: collection obviously is NOT empty in the real code -->
<sdk:DataGrid ItemsSource={Binding DataContext}>
<sdk:DataGridTemplateColumn Width="Auto">
<sdk:DataGridTemplateColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<!-- ?????? write out Ptotal in the header of the column ??????? -->
<!-- This throws a binding-related ArgumentException -->
<TextBlock Text="{Binding ???? Ptotal ?????}" />
<!-- closing tags cut off -->
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding P}" />
<!-- closing tags cut off once more-->
{Binding P}
работает, как и следовало ожидать, так как P
является свойством элементов, но как получить доступ к свойствам коллекции, например, Ptotal
, Pmin
и т. д.?
Спасибо, что нашли время, чтобы прочитать это. Если какая-либо информация отсутствует, просто укажите ее, и я отправлю ее.
Retagged, чтобы уточнить, что это Silveright 4 – Alex