【问题标题】:Wpf Dynamic Tabs with RichTextboxes带有 RichTextboxes 的 Wpf 动态选项卡
【发布时间】:2012-06-27 04:58:38
【问题描述】:


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

以下代码来自每个选项卡项中包含的用户控件:

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

我还没有完成任何绑定(当我解决这个问题时,它是自定义控件的一部分)。
谢谢大家

【问题讨论】:

标签: wpf richtextbox


【解决方案1】:

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

RichTextBox.Text 属性绑定到DataContext 中的某个内容后,它应该可以正常工作。

另一种方法是扩展当前的TabControl 类,这样当您切换选项卡时它就不会破坏其子级。您可以在 this SO answer 中找到此代码(最初包含该代码的站点已不存在),并且您可以像使用常规 TabControl 一样使用 XAML 中的控件

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

【讨论】:

  • 我认为可能是这种情况谢谢 :) 虽然现在发生的另一件有趣的事情是我在 RTB 中创建了一个标签,然后在第一个中创建了一个新标签,其中包含 RTB 的内容标签出现在第二个标签的 RTB 中:/
  • 谢谢你 经过“一点”调整后,我相信我已经整理好了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2018-10-05
  • 2020-03-04
  • 2019-07-16
  • 2010-12-25
  • 1970-01-01
相关资源
最近更新 更多