我试图让一个子元素从它的父标签项继承颜色。因此,我不必单独设置每种背景颜色,而只需设置tabitem颜色,它将为我完成剩下的工作。我尝试了很多不同的东西,但没有任何作用。在VS中,使用下面发布的代码,当我选择了ScrollViewer并在属性窗口中单击转到背景颜色绑定中的source时,它会突出显示tabitem背景属性,但颜色不会更改。对不起,我刚刚开始接收xaml。
<TabItem Name="PD" Header="Product Details" Background="#FFB5CFE2" FontFamily="Vrinda" VerticalAlignment="Stretch" >
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="750" VerticalAlignment="Stretch" Margin="-4,-5,-4,-4" Background="{Binding Background, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=TabItem}}">....
答案 0 :(得分:2)
运行应用程序时,VS中的输出窗口可以显示绑定错误。您可能有一句话:&#34; System.Windows.Data错误:4:无法找到与引用绑定的源&#39; RelativeSource FindAncestor,AncestorType =&#39; System.Windows.Controls.TabItem&#39;, AncestorLevel =&#39; 1&#39;&#39 ;. BindingExpression:路径=背景;的DataItem = NULL;目标元素是&#39; ScrollViewer&#39; (名称=&#39;&#39);目标财产是&#39;背景&#39; (键入&#39;刷&#39;)&#34;
基本上发生的事情是TabItem,选项卡的内容在可视化树中分开,您无法通过查看树来从TabContent中找到TabItem本身。请参阅此SO答案以获得直观的解释:RelativeSource in DataTemplate works with TabControl but not with TabItem
我建议你有几个选项,
按元素名称引用TabItem:
<ScrollViewer Background="{Binding Background, ElementName=PD}">
创建静态资源并在项目中使用它:
<SolidColorBrush Color="#FFB5CFE2" x:Key="PDBackgroundBrush"/>
<ScrollViewer Background="{StaticResource PDBackgroundBrush}"/>