2013-04-30 230 views
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的新手,我无法使用触发器修复它,我不确定在哪里编写这些依赖关系的触发器。

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

在此先感谢。

回答

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> 
+0

克里斯蒂安您好,感谢您的答复。这里我遇到了一个问题,那就是我将动态创建表格和表格。所以我应该基于tabItemSeleceted将样式应用于表格和表格单元格。所以我不能直接在richtextbox中应用这种样式'

“,请您提供一些其他解决方案。 – user23376132013-05-01 08:39:14

+0

@ user2337613您可以使用“ContentControl”而不是“Table”,并换出DataTrigger中的ContentTemplate。克里斯蒂安是正确的想法,根据一个绑定值改变属性的最佳解决方案是一个'DataTrigger' – Rachel 2013-05-01 12:08:06

+0

谢谢你们我把它修复了...... :) – user2337613 2013-05-01 12:24:25

相关问题