我必須實現WPF文本框,它將通過綁定提供修剪的文本。乍一看,這個任務對我來說看起來相當簡單。我決定使用依賴屬性值強制。下面我寫了我的代碼,但這似乎不起作用。我沒有在我的綁定屬性中修剪字符串。我究竟做錯了什麼?也許我應該採取另一種方法?WPF文本框文本強制
public class MyTextBox : TextBox
{
static MyTextBox()
{
TextProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(string.Empty, null, new CoerceValueCallback(CoerceText)));
}
private static object CoerceText(DependencyObject d, object basevalue)
{
string s = basevalue as string;
if(s != null)
{
return s.Trim();
}
else
{
return string.Empty;
}
}
}
我添加了一個簡單的窗口到我的應用程序進行測試。 的XAML:
<Window x:Class="TextBoxDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:TextBoxDemo="clr-namespace:TextBoxDemo"
Title="MainWindow"
Width="525"
Height="350">
<Grid>
<TextBoxDemo:MyTextBox x:Name="textBox1"
Width="120"
Height="23"
Margin="55,73,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Text}" />
<TextBoxDemo:MyTextBox x:Name="textBox2"
Width="120"
Height="23"
Margin="286,184,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Text}" />
</Grid>
</Window>
和代碼隱藏:
public partial class MainWindow : Window
{
private string _text;
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public string Text
{
get { return _text; }
set
{
_text = value;
MessageBox.Show(string.Format("|{0}|", _text));
}
}
}
它看起來好像沒什麼問題。 MyTextBox的Text屬性值永遠不會在開頭或結尾包含空格。你試圖完成什麼? –
我添加了我的測試應用程序的代碼。 MessageBox顯示未剪裁的文本。 – dzb