Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重写textbox的文本属性_C#_.net_Wpf - Fatal编程技术网

C# 重写textbox的文本属性

C# 重写textbox的文本属性,c#,.net,wpf,C#,.net,Wpf,如何在中重写textbox中的text属性 我想要WPF中的代码: public override string Text { get { return Text.Replace(",", ""); } set { Text = value; } } 文本是一个依赖属性。如果您从TextBox派生了一个类,那么您需要重写元数据并提供验证回调 看 您刚才错过了文本参数 public override string Text {

如何在中重写textbox中的text属性

我想要WPF中的代码:

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

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


您刚才错过了文本参数

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

如果您是针对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}" />
数据绑定是这样的

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>


虽然向上投票的答案是正确的,但有一种更简单的方法:由于TextBox的Text属性绑定到基础类的属性(通常在Viewmodel中),只需注意在基础类中提供替换项。

否,我希望覆盖Text属性,但在wpf中不使用这种方法。