在silverlight中更改tabItem的标题背景
如何更改TabItem中标题的颜色在silverlight中更改tabItem的标题背景,silverlight,silverlight-4.0,tabcontrol,Silverlight,Silverlight 4.0,Tabcontrol,如何更改TabItem中标题的颜色 tabItem1.Background = new SolidColorBrush(Colors.Red);//This is not changing background tabItem1.BorderBrush = new SolidColorBrush(Colors.Red);//This change header border color 使用选项卡控件上的HeaderTemplates,然后在代码隐藏中更改它们,例如: <Data
tabItem1.Background = new SolidColorBrush(Colors.Red);//This is not changing background
tabItem1.BorderBrush = new SolidColorBrush(Colors.Red);//This change header border color
使用选项卡控件上的HeaderTemplates,然后在代码隐藏中更改它们,例如:
<DataTemplate x:Key="InvalidTabHeader">
<Border BorderBrush="Red" BorderThickness="1">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="ValidTabHeader">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
然后在选项卡项XAML中
<sdk:TabItem Header="My Tab" x:Name="MyTab" HeaderTemplate="{StaticResource ValidTabHeader}">
然后您可以在视图代码中执行此类操作:
var invalidTabStyle=Resources[无效的\u TABITEM\u HEADER\u TEMPLATE]作为数据模板
var validTabStyle=资源[有效的\u选项卡项\u标题\u模板]作为数据模板
myTabItem.HeaderTemplate=errorCnt==0?validTabStyle:invalidTabStyle 使用选项卡控件上的HeaderTemplates,然后在代码隐藏中更改它们,例如:
<DataTemplate x:Key="InvalidTabHeader">
<Border BorderBrush="Red" BorderThickness="1">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="ValidTabHeader">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
然后在选项卡项XAML中
<sdk:TabItem Header="My Tab" x:Name="MyTab" HeaderTemplate="{StaticResource ValidTabHeader}">
然后您可以在视图代码中执行此类操作:
var invalidTabStyle=Resources[无效的\u TABITEM\u HEADER\u TEMPLATE]作为数据模板
var validTabStyle=资源[有效的\u选项卡项\u标题\u模板]作为数据模板
myTabItem.HeaderTemplate=errorCnt==0?validTabStyle:invalidTabStyle 不幸的是,很常见的情况是,即使是一些相当简单的功能也需要您自己对现有控件进行模板化(或者像Myles建议的那样,您只需用自己的控件覆盖默认UI) 这种情况下的问题是,现有的TabItem template假设所选选项卡将具有白色(#FFFFFFFF)背景,其硬编码到模板中(这在许多默认模板中非常常见) 您应该注意,您的背景值将影响未选择的选项卡,尽管您的<代码>红色代码>不是实心的,因为粉红色渐变
我的建议是咬紧牙关,复制TabItem的默认模板,然后根据需要进行操作。这种方法在不添加额外不必要的UI元素的情况下为您提供了更大的灵活性。不幸的是,即使是一些相当简单的功能也需要您自己对现有控件进行模板化(或者像Myles建议的那样,您只需用自己的控件覆盖默认UI) 这种情况下的问题是,现有的TabItem template假设所选选项卡将具有白色(#FFFFFFFF)背景,其硬编码到模板中(这在许多默认模板中非常常见) 您应该注意,您的背景值将影响未选择的选项卡,尽管您的<代码>红色代码>不是实心的,因为粉红色渐变
我的建议是咬紧牙关,复制TabItem的默认模板,然后根据需要进行操作。这种方法在不添加额外不必要的UI元素的情况下为您提供了更大的灵活性。我已经在关注您的解决方案,似乎我想要的问题是,它在该选项卡标题区域上显示框状,而不是在中间显示所有标题。我已经在关注您的解决方案,似乎我想要的问题是它在选项卡标题区域上显示框,而不是所有标题,它在中间显示broder