2012-06-27 67 views
0


我有一个可关闭选项卡的系统,并且每个选项卡都具有RichTextbox(作为暂存区)。我遇到的问题是,每当我创建一个新选项卡时,它应该创建一个新的RichTextBox,但它会覆盖所有以前的RTB的内容,将它们全部清除。有人能告诉我为什么发生这种情况?但是,当我创建固定的RTB时(例如创建一个带4个选项卡的选项卡控件,每个选项卡都有自己的RTB),则不会发生这种情况,那么一切正常。但它不适用于动态标签?带有RichTextbox的Wpf动态选项卡

从用户控件中包含每个标签项目中下面的代码是:

<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> 

我没有做过任何做绑定的(这是一个自定义的控制的一部分,当我整理出这个问题)。
感谢所有

+0

你能包括代码在哪里创建动态标签?谢谢 – SalGad

+0

SalGad,这些添加方式与本文中的Josh Smith相同:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx – Heinrich

回答

1

这是因为WPF将卸载TabItems不在使用,这意味着如果Text属性没有被绑定到任何东西,它会被重置。

一旦您将RichTextBox.Text属性绑定到DataContext中的某个值,它应该可以正常工作。

另一种方法是扩展当前的TabControl类,以便在切换制表符时不会销毁其子级。你可以找到this SO answer此代码(最初包含的代码不在身边了该网站),并使用在XAML控制以同样的方式,你会经常TabControl

<local:TabControlEx ItemsSource="{Binding OpenTabs}" 
        SelectedTab="{Binding SelectedTab}" /> 
+0

我认为可能是这种情况谢谢:)虽然现在正在发生的其他有趣事情是,我在RTB中创建了一个制表符,然后创建一个新制表符,第一个制表符中的RTB内容出现在第二个制表符的RTB中:/ – Heinrich

+0

谢谢调整我相信我已经排序:) – Heinrich