我是WPF的新手,我试图获得一系列嵌套的TabControls来过滤一些数据,但嵌套的标签似乎永远不会出现。
<TabControl ItemsSource="{Binding Years}" SelectedItem="{Binding SelectedYear, UpdateSourceTrigger=PropertyChanged}">
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, UpdateSourceTrigger=PropertyChanged}">
<TabControl.ContentTemplate>
<DataTemplate>
<!-- Data filtered by year and customer here -->
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
如果我在第一个DataTemplate中使用没有数据绑定的已定义TabItems,它们就没有问题。是否有一个技巧让嵌套的数据绑定选项卡控件工作?我一般都是以一种非常愚蠢的方式做这件事吗?
编辑: 我的ViewModel中的数据意味着过滤是一个ObservableCollection of Forecast对象:
public ObservableCollection<Forecast> ForecastsNational
{
get { return _forecastsNational ?? (_forecastsNational = new ObservableCollection<Forecast>()); }
set { Set(() => ForecastsNational, ref _forecastsNational, value); }
}
相关属性为: DateTime ForecastDate, 字符串CustomerName, int数量, 十进制数量
目前,我的“年”和“客户”系列只是通过从ForecastsNational系列中选择不同的值来填充:
ForecastsNational.Select(x => x.Customer).OrderBy(x => x).Distinct()
我的计划是在集合上使用ICollectionView并使用SelectedYear和SelectedCustomer值应用过滤器:
ForecastsNationalCollectionView.Filter =
m => ((Forecast)m).Year == int.Parse(SelectedYear) && ((Forecast)m).Customer == SelectedNationalCustomer;