wpf TabHeader中第一个选项卡标题中的图像
我想在当前完全工作的Prism MVVM WPF应用程序中的TabControl的第一个选项卡标题中显示一个图像 完整描述如下: 当用户从左侧区域的类别列表中选择一个项目时,它会在右侧区域显示“更多详细信息”和“相关产品”。此右侧区域包含UserControl中的TabControl。 第一个选项卡显示“更多类别详细信息”,而第二个选项卡显示“相关产品”。数据显示正确。现在我只想在第一个选项卡标题中显示类别缩略图和类别名称 我尝试在第一个选项卡上使用HeaderTemplate,如下所示wpf TabHeader中第一个选项卡标题中的图像,wpf,mvvm,prism,tabcontrol,tabitem,Wpf,Mvvm,Prism,Tabcontrol,Tabitem,我想在当前完全工作的Prism MVVM WPF应用程序中的TabControl的第一个选项卡标题中显示一个图像 完整描述如下: 当用户从左侧区域的类别列表中选择一个项目时,它会在右侧区域显示“更多详细信息”和“相关产品”。此右侧区域包含UserControl中的TabControl。 第一个选项卡显示“更多类别详细信息”,而第二个选项卡显示“相关产品”。数据显示正确。现在我只想在第一个选项卡标题中显示类别缩略图和类别名称 我尝试在第一个选项卡上使用HeaderTemplate,如下所示 <
<TabControl VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" >
<TabItem Name="tabItemCategoryMoreInfo" >
<TabItem.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="viewImage" Height="20" Width="20" Margin="0,0,2,0"
Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl} }, Path=Content.DataContext.SelectedParent.PictureBinary}"/>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem} }, Path=Content.DataContext.SelectedParent.CategoryName}"
VerticalAlignment="Center" FontSize="14" FontWeight="SemiBold" />
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem} }, Path=Content.DataContext.SelectedParent.PictureBinary}" Value="{x:Null}" >
<Setter TargetName="viewImage" Property="Source" Value="/CatalogModule;component/Images/ItemIcon.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</TabItem.HeaderTemplate>
<ContentControl prism:RegionManager.RegionName="CategoryMoreDetailsRegion" />
</TabItem>
<TabItem Header="Products" Name="tabItemCategoryProducts">
<ContentControl prism:RegionManager.RegionName="CategoryProductsRegion" />
</TabItem>
它没有显示产品名称或产品图像。但它只显示默认图像,因此触发器看起来工作正常。能不能请一些人帮忙
编辑:
最初,我在图像数据路径中使用TabItem而不是TabControl:
<Image x:Name="viewImage" Height="20" Width="20" Margin="0,0,2,0"
Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem} }, Path=Content.DataContext.SelectedParent.PictureBinary}"/>
数据模板绑定中的
路径
不同。。。这也许可以解释为什么它不起作用。如果我理解正确,您会说DataTrigger
中的Binding Path
有效,因此可能需要更改ImageSource
和TextBlock.Text
属性的Binding Path
:
最初我用TabItem代替TabControl,我忘了给它定尺寸,它不起作用。对不起,我没有解释清楚。我所说的“dataTrigger正在工作”是因为它无法从数据源中找到正确的图片(因为我的代码不正确),所以它显示了文件夹中的默认图片“ItemIcon.png”。
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="viewImage" Height="20" Width="20" Margin="0,0,2,0"
Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=Content.DataContext.SelectedParent.PictureBinary}"/>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Content.DataContext.SelectedParent.CategoryName}"
VerticalAlignment="Center" FontSize="14" FontWeight="SemiBold" />
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Content.DataContext.SelectedParent.PictureBinary}" Value="{x:Null}" >
<Setter TargetName="viewImage" Property="Source" Value="/CatalogModule;component/Images/ItemIcon.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
AncestorType={x:Type TabControl}