自定义TextBox,包含部分固定内容

时间:2013-11-29 07:17:01

标签: wpf xaml

我需要在WPF中创建一个自定义TextBox,文本框将有一些数字和字符串“%Per Annum”,如“55%Per Annum”。用户应该只能改变文本框中的数字,我想保持字符串“%Per Annum”不可编辑。请帮帮我。

2 个答案:

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