2011-08-17 74 views
2

我有存储在一个字符串属性一串数字:Silverlight的格式化字符串绑定采用的StringFormat

1234567890 

我想输出到显示:

(123) 456-7890 

我可以在一个格式化这个在使用StringFormat属性进行绑定时的TextBlock?我在我的绑定表达式中尝试了诸如stringformat='{0:(###) ###-####}'之类的东西,但没有任何成功。

回答

0

的#占位符是与数字类型使用。据我所知,字符串中没有占位符。要格式化字符串,首先将其转换为数字类型,然后应用格式化。这只需要一串数字。可能会抛出FormatException或OverflowException。我通过向我的实体添加了一个新属性来解决问题。

public string FormattedPhone 
{ 
    get { return Convert.ToDouble(this.Phone).ToString("(###) ###-####"); } 
} 

partial void OnPhoneChanged() 
{ 
    this.RaisePropertyChanged("FormattedPhone"); 
} 

我的结合则是这样的:

<TextBlock Text="{Binding Path=FormattedPhone, Mode=OneWay}"/> 
0

试试这个:

<TextBox Text="{Binding PhoneNumber, StringFormat='(###) ###-####'}" /> 
+0

这并没有为我工作。这是我的代码:''这是在工具提示中,但是应该不重要?输出:'1234567890' – DaveB

+0

Phone属性是字符串还是数字?我用数字(Int)属性试了一下,它对我很有用。它不会使用字符串属性,因为该字符串格式适用于数字。 –

+0

正如我在我的问题中提到的那样,它是一个字符串属性,并且是的,这就是为什么格式不能应用于它的原因。 - 感谢您的回应 – DaveB