TextBlock의 Text를 "Name (null이 아닌 속성의 항목 수)"과 같이 설정해야합니다. 지금은 ItemsSource.Count를 사용하여 전체 컬렉션의 항목 수를 사용하여이 작업을 수행합니다. 이를 위해 ObservableCollection의 부분에 대한 WPF 멀티 바인딩
<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>
는 I는 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가 TrackingData 오브젝트를 갖는 컬렉션에 바인더 제본 (여기서 코드를 도시하지 않음) 아래에 정의 된 데이터 그리드이다. TrackingData에는 Tracking이라는 속성이 있습니다. 이 속성이 null 인 ObservableCollection의 항목 만 계산해야합니다. 이것을 어떻게 할 수 있습니까?
public class TrackingData : INotifyPropertyChanged
{
public Model.ITracking Tracking { get; set; }
...
}
미리 감사드립니다.
Logic을 ViewModel의 ItemsCount 속성으로 이동했습니다. 그 Setter에서 OnPropertyChanged가 해고되었습니다. ItemsCount는 ICollectionView.CollectionChanged에 대한 대리자로 설정됩니다. 모든 답변이 도움이되었습니다. 고마워요! – GRF