0

我有一个 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>

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

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

由于我是 WPF 的新手,我无法使用触发器修复它,而且我不确定在哪里为这些依赖项编写触发器。

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

提前致谢。

4

1 回答 1

1

考虑使用带有 Style.Triggers 和 DataTriggers 的单一样式来控制 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>
于 2013-04-30T22:49:29.740 回答