【问题标题】:Trigger on Tab Control在选项卡控件上触发
【发布时间】:2013-04-24 22:45:31
【问题描述】:

我有一个 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 新手,我无法使用触发器修复它,而且我不确定在哪里为此类依赖项编写触发器。

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

提前致谢。

【问题讨论】:

    标签: wpf wpf-controls tabcontrol


    【解决方案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>
    

    【讨论】:

    • 嗨克里斯蒂安,感谢您的回复。这里我遇到了一个问题,那就是我将动态创建表格和表格单元。所以我应该根据 tabItem Selected 将样式应用于表格和表格单元。所以我不能直接在richtextbox中应用这种样式'
      '。请你给我一些其他的解决方案。
    • @user2337613 您可以使用ContentControl 而不是Table,并在DataTrigger 中换掉ContentTemplate。 Kristian 是正确的想法,根据绑定值更改属性的最佳解决方案是 DataTrigger
    • 谢谢伙计们,我把它修好了... :)
    • 根据您在此处输入的是代码 ''
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多