我有一个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新手,我无法使用触发器修复它,我不知道在哪里为这种依赖项编写触发器。
有人请帮我解决这个问题,因为这是一个高度优先的问题。
提前致谢。
答案 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>