0


閉じることができるタブのシステムがあり、各タブには (スクラッチパッドとして) RichTextbox があります。私が抱えている問題は、新しいタブを作成するたびに、おそらく新しい RichTextBox を作成する必要がありますが、以前のすべての RTB の内容を上書きしてすべてクリアすることです。なぜこれが起こるのか誰か教えてもらえますか?? ただし、固定 RTB を作成すると (たとえば、4 つのタブを含むタブ コントロールを作成し、各タブに独自の RTB がある)、すべて正常に動作します。しかし、動的タブでは機能しませんか?

以下のコードは、各タブ項目に含まれる Usercontrol からのものです。

    <Border Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="0" Grid.RowSpan="3" BorderBrush="#FF939393" BorderThickness="26" CornerRadius="26" >
        <Border.Effect>
            <DropShadowEffect />
        </Border.Effect>           
    </Border>
    <TextBlock Grid.Column="1" Grid.Row="0" Height="23" Name="textBlock1" Text="{Binding Path=TestMessage}" />
    <Button Grid.Column="0" Grid.Row="1" Style="{DynamicResource PageNavigationButton}" Height="52" Width="26" Command="{Binding Path=CMD_SwapLeft}" >
        <Button.RenderTransform >
            <RotateTransform Angle="180" CenterX="13" CenterY="26" />
        </Button.RenderTransform>
    </Button>
    <Button Grid.Column="2" Grid.Row="1" Style="{DynamicResource PageNavigationButton}" Height="52" Width="26" Command="{Binding Path=CMD_SwapRight}" />

    <View:DebtorTabView Grid.Column="1" Grid.Row="1" Visibility="{Binding RelativeSource={RelativeSource Self}, Path=Parent.DataContext.MyDataContextVisibility}"  DataContext="{Binding Path=MyDataContext}"  />
    <Grid Background="Blue" Grid.Column="1" Grid.Row="1" Visibility="{Binding Path=MyDataContextOtherVisibility}">
        <TextBlock Text="{Binding Path=TestMessageTwo}" Height="23" Width="124" Margin="6,6,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
        <RichTextBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </Grid>

私はバインディングを行っていません (これは、この問題を解決するときのカスタム コントロールの一部です)。
皆さんありがとう

4

1 に答える 1

1

これは、WPF がTabItems使用されていないものをアンロードするためです。つまり、Textプロパティが何にもバインドされていない場合、リセットされます。

RichTextBox.Textプロパティを 内の何かにバインドするDataContextと、正常に動作するはずです。

別の方法は、現在のクラスを拡張して、TabControlタブを切り替えたときにその子を破棄しないようにすることです。これのコードはこの SO 回答で見つけることができます(元のコードが含まれていたサイトはもうありません)。XAML で通常のコントロールと同じようにコントロールを使用します。TabControl

<local:TabControlEx ItemsSource="{Binding OpenTabs}" 
                    SelectedTab="{Binding SelectedTab}" />
于 2012-06-27T13:13:37.410 に答える