触发选项卡控件

时间:2013-04-30 21:56:49

标签: wpf wpf-controls tabcontrol

我有一个Tabcontrol 和RichTextBox控件如下

<TabControl x:Name="tabControl" SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}">
        <TabItem Header="Edit" TabIndex="0" />
        <TabItem Header="View" TabIndex="1" />
</TabControl>

<RichTextBox x:Name="richTextBox"> </RichTextBox>

现在我有两个样式定义为

<Style TargetType="Table" x:Key="EditStyleKey">
  <Setter Property="BorderBrush" Value="Black"/>
  <Setter Property="BorderThickness" Value="1"/>
  <Setter Property="Padding" Value="1"/>
</Style>

<Style TargetType="Table" x:Key="ViewStyleKey">
   <Setter Property="BorderThickness" Value="0"/>
   <Setter Property="Padding" Value="0"/>
</Style>

我将在Rich文本框中创建一个表。

我的问题是,当我选择第一个tabitem(SelectedIndex = 0)时,我应该应用触发器来更改richtextbox中表格的样式“EditKeyStyle”。当我选择第二个标签(SelectedIndex = 1)时,我应该为Richtextbox应用“ViewStyleKey”。

由于我是WPF新手,我无法使用触发器修复它,我不知道在哪里为这种依赖项编写触发器。

有人请帮我解决这个问题,因为这是一个高度优先的问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

考虑使用带Style.Triggers和DataTriggers的单个Style来控制RichTextBox中表格的样式。下面的代码根据SelectedIndex的值更改BroderThickness和Padding属性,您必须更改SelectedIndex绑定,以便它指向您的TabControl.SelectedIndex属性。

我在项目中使用了类似下面代码的东西

<UserControl.Resources>
    <Style x:Key="tableStyleKey" TargetType="Table" >
        <Setter Property="BorderBrush" Value="Black"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=SelectedIndex}" Value="0">
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="Padding" Value="1"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=SelectedIndex}" Value="1">
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="Padding" Value="1"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

<RichTextBox>
       <Table Style="{StaticResource tableStyleKey}"/>
</RichTextBox>