Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
Wpf 更改xaml中的默认绑定/文本框字符串格式_Wpf_Xaml_Data Binding - Fatal编程技术网

Wpf 更改xaml中的默认绑定/文本框字符串格式

Wpf 更改xaml中的默认绑定/文本框字符串格式,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我正在创建一个包含大量文本框的表单,这些文本框具有如下声明的文本属性: Text="{Binding Path=SomeField, StringFormat='\{0:#,##0.##\}', Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true, Source={StaticResource statementsMainsViewSource}}" 为了节省大量空间和按键,我想知道是否有一种方法可以使用样

我正在创建一个包含大量文本框的表单,这些文本框具有如下声明的文本属性:

Text="{Binding Path=SomeField, StringFormat='\{0:#,##0.##\}', Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true, Source={StaticResource statementsMainsViewSource}}"
为了节省大量空间和按键,我想知道是否有一种方法可以使用样式在每个窗口中设置默认文本框(例如,与下面的错误代码类似):


不幸的是,具有属性的是绑定内容,而不是文本框,我不知道如何设置绑定样式

有人能告诉我更改默认绑定字符串格式的正确语法吗?或者有人能建议我如何做我正在尝试的事情吗

干杯

mcalex

试试这个

public class TextBinding:Binding
{
    public TextBinding()
    {
        Mode = BindingMode.TwoWay;
        StringFormat = @"\{0:#,##0.##\}";
        ValidatesOnExceptions = true;
        NotifyOnValidationError = true;
    }
}

   xmlns:myBinding="clr-namespace:WpfApplication2">
<Grid>
    <TextBox Text="{myBinding:TextBinding Path=SomeProperty}"/>
</Grid>
公共类TextBinding:Binding
{
公共文本绑定()
{
Mode=BindingMode.TwoWay;
StringFormat=@“{0:\,###0.##\}”;
ValidatesOnExceptions=true;
NotifyOnValidationError=true;
}
}
xmlns:myBinding=“clr命名空间:WpfApplication2”>

现在,您可以通过这种方式绑定到所有文本框,而无需设置绑定的上述4个属性,它们将自动应用。我希望这能帮你想出一个主意。

这几乎可以解决问题。但是,当我将字段从数据源拖放到设计器的文本框中时,它会覆盖
“{myBinding:TextBinding…”
,并将其替换为标准绑定语法。这就是为什么我希望使用默认/模板类型的解决方案PS:尝试升级投票,但我还没有获得声誉
public class TextBinding:Binding
{
    public TextBinding()
    {
        Mode = BindingMode.TwoWay;
        StringFormat = @"\{0:#,##0.##\}";
        ValidatesOnExceptions = true;
        NotifyOnValidationError = true;
    }
}

   xmlns:myBinding="clr-namespace:WpfApplication2">
<Grid>
    <TextBox Text="{myBinding:TextBinding Path=SomeProperty}"/>
</Grid>