2012-07-24 74 views
0

我创造了很多文本框的形式有如下声明的文本属性:更改默认绑定/文本框的StringFormat在XAML

Text="{Binding Path=SomeField, StringFormat='\{0:#,##0.##\}', Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true, Source={StaticResource statementsMainsViewSource}}" 

为了节省体积空间&击键,我想知道有使用样式(如有些类似下面的不正确的代码)的方式在每个窗口设置默认文本框:

<Style TargetType="{x:Type TextBox}"> 
     <Setter Property="StringFormat" Value="\{0:#,##0.##\}" /> 
</Style> 

不幸的是,它是有属性,而不是文本框绑定的东西,我不不知道如何设置装订风格。

任何人都可以指出正确的语法来更改默认绑定StringFormats - 或者任何人都可以建议我怎么能做我想要的?

欢呼声和TIA

mcalex

回答

0

试试这个

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> 

现在你可以用这种方式绑定到所有文本框没有设置的结合,他们将被自动应用了上述4处房产。我希望这会帮助你获得想法。

+0

这几乎完成了这项工作。但是,当我从DataSources拖放字段到设计器的文本框中时,它将覆盖'“{myBinding:TextBinding ...”,并用标准绑定语法替换它。这就是为什么我希望有一个默认/模板类型的解决方案 PS:试图upvote,但我不知道声誉 – mcalex 2012-07-24 10:32:07