我需要在WPF中创建一个自定义TextBox,文本框将有一些数字和字符串“%Per Annum”,如“55%Per Annum”。用户应该只能改变文本框中的数字,我想保持字符串“%Per Annum”不可编辑。请帮帮我。
答案 0 :(得分:1)
在WPF中,您可以修改控件的模板,以在保持功能的同时完全更改外观。在您的情况下,您可以通过在控件的边框内添加一些额外的文本来修改TextBox
的控件模板。
在Visual Studio中,向您的XAML添加TextBox
。然后在文档大纲中,您可以右键单击TextBox
,然后选择修改模板 => 修改副本... 。然后,Style
的{{1}}会添加到您的XAML中,其中包含默认TextBox
使用的ControlTemplate
的副本。然后,您可以根据需要修改模板。
TextBox
的主要部分是TextBox
边框内的ScrollViewer
。要获得您想要的结果,您可以将ListBoxChrome
包含在ScrollViewer
的两列中,然后在第二列中放置一个Grid
,文本为“%Per Annum”。您可能还希望右对齐TextBlock
中的文字,默认情况下您可以通过在TextBox
的{{1}}中将HorizontalContentAlignment
设置为Right
来执行此操作
以下是一个完整的示例XAML,其中添加了一些注释以显示我在哪里进行了编辑:
Style
答案 1 :(得分:0)
最简单的,在我看来更好的方法是将文本框放在StackPanel
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Path=MyTextProperty}"/>
<Label Content="55% Per Annum" />
</StackPanel>