2013-04-30 144 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

相關問題