修复了文本框中的文本
本文关键字:文本 | 更新日期: 2023-09-27 18:32:32
如何动态地将固定文本添加到文本框中?我所说的"固定文本"是指用户输入无法删除的文本。
例如,CMD 中的路径:
C:'Program Files>cd ..
C:'>
我假设你想要一个可编辑的文本框,它的开头有一些用户无法编辑的固定文本。 如果是这样,那么这似乎有效 - 它基于在 Blend 中提取的标准文本框样式......
需要在 xaml 根中具有以下命名空间声明:
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
然后使用此模板:
<ControlTemplate TargetType="{x:Type TextBox}">
<Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center">This is fixed:</TextBlock>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</StackPanel>
</Microsoft_Windows_Themes:ListBoxChrome>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
如果要将其包装在自定义控件或用户控件中,则可以通过自定义属性以编程方式设置固定文本。
当您动态填充文本时,文本框是否为真? 如果使用 MVVM 将 IsReadOnly 绑定到 ViewModel 中的某个属性,则当该 ViewModel 填充文本时,该属性将 IsReadOnly 绑定
您可以改用文本块。如果必须使用文本框,则可以以只读方式将 IsReadOnly 属性更改为"True"
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (textBox1.SelectionStart < LengthOfFixedString)
e.SuppressKeyPress = true;
}