c# - WPF - 部分不可编辑的文本框

标签 c# wpf xaml

有没有办法在 WPF 的 TextBox 中添加一段固定的文本(TextBlock 或 Label)?这样;用户可以在控件中围绕它写文本,但不能删除或编辑它?

我正在寻找 this question 的倒数,即:

<TextBox>
    "Chunk #1: This part of text is editable"

    "Chunk #2: This piece is not editable"

    "Chunk #3: This text is editable"
</TextBox>

(注意:这些是用于详细说明的假想卡盘,它是一个文本 block 的全部延续;可能是多行,带有换行符)。

当用户编辑 Chunk #1#3 时,Chunk #2 应该相应移动。

最佳答案

您可以在 StackPanel 中使用三个 TextBox 控件:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
        <TextBox BorderThickness="1,1,0,1"/>
        <TextBox BorderThickness="0,1,0,1" 
                 Text="Chunk 2" IsReadOnly="True"
                 IsTabStop="False" />
        <TextBox BorderThickness="0,1,1,1"/>
    </StackPanel>
</Grid>

结果是这样的:

Resulting view

编辑:您应该能够使用 Tab 键从第一个 TextBox 跳到最后一个。

关于c# - WPF - 部分不可编辑的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959007/

相关文章:

c# - 修改 Service Fabric 可靠集合中的原始对象

c# - 使用 IEqualityComparer 和 Equals/GethashCode Override 有什么区别?

c# - Lucene.Net(3.0.3 或 4.8.0)QueryParser 可以搜索数字吗?

wpf - 在 WPF 中将 slider 值绑定(bind)到 slider 的高度

wpf - 如何在 xaml 字符串中使用 "{"符号

c# - 从字符串初始化 RSA

wpf - ObservableCollection<T> 不更新 UI

wpf - 计算应等待调度程序

c# - 从 ViewModel 中选择 TabControl 中的 TabItem

c# - XAML 路径元素 - 如何制作软角