我在 .NET 3.5 SP1 中有一个 WPF 应用程序,它正在使用TabControl
.
在那我们有TabItems
,这反过来又有它们的Styles
确定当前显示的项目。
假设我们有一个TabItem
named Books, now Books将分为三个阶段的显示:
1.加载结果,
2. 显示结果,
3. 未显示任何结果 - 即未找到任何内容。
<TabControl>
<TabItem Header="Books"/>
<TabItem Header="DVD's"/>
...
</TavControl>
现在我有5个TabItems
假设代表“DVD”、“蓝光”、“CD”、“书籍”和“漫画”。
<TabItem Header="Books">
<Control>
<Control.Resources>
<Style TargetType="Control">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Control">
<ListView ItemsSource="{Binding Books}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<!-- Assign different Visuals depending on the current state of the app, i.e. Loading, No results, results found
<DataTrigger .../>
</Style.Triggers>
</Style>
</Control.Resources>
</Control>
</TabItem>
在下面TabItem
我有一个TextBlock
显示当前找到的结果数:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Displaying {0} records for your Shop ({1})" Converter="{StaticResource tstMVC}">
<Binding ElementName="Tc" Path="SelectedValue"/>
<Binding Path="ShopId" FallbackValue="Liverpool"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
转换器可以让我检查传入的值MultiBinding
.
ISSUE:
When user选择我想要显示的选项卡项目当前号码显示的项目数,但我找不到ListView
in the Control
,因为这是当前内容TabItem
.
我已经尝试过 TabControl.SelectedItem、SelectedValue 但仍然找不到 Current ItemsSource.Count。
提前致谢
UPDATE:
我已经尝试了这两种解决方案,非常感谢@Sheridan 和@pushpraj!
不幸的是我没有使用它们中的任何一个,而是我在里面使用了ListViewTabItem
然后使用以下代码访问它:
<TabControl Name="Tc">
<TabItem><ListView ItemsSource="{Binding Books}"/></TabItem>
...
</TabControl>
<TextBlock Text="{Binding ElementName=Tc, Path=SelectedItem.Content.Items.Count}"/>
这样,每次用户选择不同的选项卡时,我的 TextBlock 的内容都会发生变化。
P.S.尽管如此,如果没有对这两个答案进行评估,我就不会这样做。