覆盖文本框的文本属性

时间:2011-09-29 05:16:30

标签: c# .net wpf

如何覆盖WPF中文本框中的文本属性?

我想在WPF中使用此代码:

 public override string Text
 {
        get { return Text.Replace(",", ""); }
        set { Text = value; }
 }

4 个答案:

答案 0 :(得分:3)

如果您是对TextBox.Text属性的数据绑定,那么另一种可能的方法是将逻辑从控件本身移开并将其放在转换器中。你的转换器看起来像这样......

public class CommaReplaceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
                          object parameter, CultureInfo culture)
    {
        return value;
    }

    public object ConvertBack(object value, Type targetType, 
                              object parameter, CultureInfo culture)
    {
        return value.ToString().Replace(",", "");
    }
}

数据绑定就像这样...

<TextBox Text="{Binding XXX, Converter={StaticResource CRC}" />

...静态资源定义为......

<Window.Resources>
    <CommaReplaceConverter x:Key="CRC"/>
</Windows.Resources>

答案 1 :(得分:2)

Text是一个依赖属性。如果您从TextBox派生了一个类,那么您需要覆盖元数据并提供验证回调

答案 2 :(得分:0)

虽然upvoted答案是正确的,但有一个更简单的方法:因为TextBox的Text属性绑定到底层类的属性(通常在Viewmodel中),所以只需要在底层类中提供替换。

答案 3 :(得分:-1)

你刚刚错过了文字参数?

public override string Text 
    { 
        get { return Text.Replace(",", Text); } 
        set { Text = value; } 
    }