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>

そして今、次のように定義された2つのスタイルがあります

<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」を変更する必要があることです。2 番目のタブ (SelectedIndex=1) を選択すると、Richtextbox に「ViewStyleKey」を適用する必要があります。

私はWPFを初めて使用するため、トリガーを使用して修正できませんでした。これらの種類の依存関係のトリガーをどこに書き込むべきかわかりません。

これは優先度の高い問題であるため、誰かがこの問題を解決するための助けを提供してください.

前もって感謝します。

4

1 に答える 1

1

Style.Triggers と DataTriggers で単一の Style を使用して、RichTextBox 内のテーブルのスタイルを制御することを検討してください。以下のコードは、TabControl.SelectedIndex プロパティを指すように SelectedIndex バインディングを変更する必要がある SelectedIndex の値に基づいて BroderThickness および Padding プロパティを変更します。

プロジェクトで以下のコードに似たものを使用しました

<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 に答える