4

好的,我到处搜索,在我遇到问题的每个链接中都用xaml代码解释了。

我想在 WPF 项目中更改活动选项卡的背景和前景(不是其内容,而是您选择以使其处于活动状态的上部),但我正在寻找 C# 代码。下面的代码对我不起作用:

if (tabs[0].IsEnabled) tabs[0].Background = Brushes.Blue;

else tabs[0].Background = Brushes.Black;
4

3 回答 3

4

如果您使用 WPF,请在 XAML 中执行此操作。

您可以绑定到 TabControl 的属性ItemsSource。不仅仅是定义一个Styletrigger来改变背景

于 2013-01-20T13:24:50.283 回答
2

好的,感谢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>

此代码位于and<Grid><Window>标签中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; }
}

这进入MainWindow.xaml.cs文件。

请注意:颜色仅供测试,请勿因选择的对比度差而评判我!

不过,我不知道是否可以不使用其他课程。

于 2013-01-20T23:06:35.827 回答
0
foreach(var tab in tabs)
{
    tab.Background = tab.IsEnabled ? Brushes.Blue :Brushes.Black;
}

但是您可以在活动选项卡更改时处理选项卡控件的状态,并设置停用和激活选项卡的背景。

于 2013-01-20T09:47:03.677 回答