好的,我搜索了無處不在,並在每一個鏈接我去我的問題是解釋與xaml
代碼。在C#和XAML中更改活動選項卡的背景
我想更改活動標籤的背景和前景(不是它的內容,但你爲了讓活躍選擇上部)在WPF項目,但我在尋找的C#代碼。下面的代碼不爲我工作:
if (tabs[0].IsEnabled) tabs[0].Background = Brushes.Blue;
else tabs[0].Background = Brushes.Black;
好的,我搜索了無處不在,並在每一個鏈接我去我的問題是解釋與xaml
代碼。在C#和XAML中更改活動選項卡的背景
我想更改活動標籤的背景和前景(不是它的內容,但你爲了讓活躍選擇上部)在WPF項目,但我在尋找的C#代碼。下面的代碼不爲我工作:
if (tabs[0].IsEnabled) tabs[0].Background = Brushes.Blue;
else tabs[0].Background = Brushes.Black;
如果您使用WPF,請在XAML中執行此操作。
您可以將bind添加到TabControl的屬性ItemsSource
。不僅僅是定義Styletrigger改變背景
foreach(var tab in tabs)
{
tab.Background = tab.IsEnabled ? Brushes.Blue :Brushes.Black;
}
但是你可以在活動標籤的變化和停用和激活標籤的設置背景處理的tabcontrol的狀態。
您的實例無法正常工作,標籤在不活動時變爲藍色,但在活動時仍爲白色 – Bonnev
它如何變白?我設置了藍色或黑色。你在哪裏調用這個代碼? –
OK,感謝Venson
我終於得到它,以防萬一有人想知道它是如何工作的:
<TabControl ItemsSource="{Binding tabs}" Height="68" HorizontalAlignment="Left" Margin="156,23,0,0" Name="tabControl1" VerticalAlignment="Top" Width="268">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border
Margin="0,0,-4,0"
Background="Black"
BorderBrush="Blue"
BorderThickness="1,1,1,1"
CornerRadius="2,12,0,0" >
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"
RecognizesAccessKey="True"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Blue"></Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border
Margin="0,0,-4,0"
Background="Green"
BorderBrush="Blue"
BorderThickness="1,1,1,1"
CornerRadius="2,12,0,0" >
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"
RecognizesAccessKey="True"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
此代碼放在的<Grid>
的MainWindow.xaml
和
public MainWindow()
{
testClass testObject = new testClass();
testObject.tabs = new List<TabItem>();
testObject.tabs.Add(new TabItem());
testObject.tabs.Add(new TabItem());
testObject.tabs[0].Header = "NO WAY";
testObject.tabs[1].Header = "ON WAY";
testObject.tabs[0].Content = "WHAT";
testObject.tabs[1].Content = "HELL";
InitializeComponent();
this.DataContext = testObject ;
}
class testClass
{
public List<TabItem> tabs { set; get; }
}
這個<Window>
標籤進入MainWindow.xaml.cs
文件。
請注意:顏色只用於測試,不要因爲我選擇的不好的對比度而判斷我!
我不知道是否有可能不使用另一個類,但..
如果你真的想使用WPF,你應該通知自己[MVVM](http://en.wikipedia.org/wiki/Model_View_ViewModel),因爲它是可能的;-)。隨意問 – Venson
@Venson因爲「標籤」是一個List <>,它是不是在XAML代碼。 – Bonnev
您可以[綁定](http://msdn.microsoft.com/en-us/library/ms752347.aspx)到TabCOntrol的屬性'ItemsSource'。不只是定義一個[Styletrigger](http://msdn.microsoft.com/en-us/library/ms743015.aspx)來更改背景 – Venson
我會進行一項研究並查看一些關於「綁定」的示例,謝謝很多! – Bonnev