Мне нужно установить TextBlock's Text на что-то вроде «Имя (количество элементов с ненулевым свойством)». Прямо сейчас я делаю это, используя количество элементов всей коллекции, используя ItemsSource.Count.
<TextBlock x:Name="textBlockHeader" >
<TextBlock.Text>
<MultiBinding Converter="{StaticResource headerCreator}" x:Name="multiBinder">
<Binding ElementName="trackingTable" Path="Name" />
<Binding ElementName="trackingsGrid" Path="ItemsSource.Count" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Для этого я использую IMultiValueConverter:
internal class HeaderCreator : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Based on this xaml
////<Binding ElementName="trackingTable" Path="Name" /> values[0]
////<Binding ElementName="trackingsGrid" Path="ItemsSource.Count" /> values[1]
return values[0] + " (" + values[1] + ")";
}
trackingsGrid - это DataGrid, определенный ниже (здесь не показан код), связанный с коллекцией, в которой есть объекты TrackingData. TrackingData имеет свойство, которое называется Tracking. Мне нужно учитывать только элементы в ObservableCollection, у которых это свойство не равно нулю. Как мне этого добиться?
public class TrackingData : INotifyPropertyChanged
{
public Model.ITracking Tracking { get; set; }
...
}
Заранее спасибо.