Guest User

Untitled

a guest
May 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. <DataTemplate x:Key="PhoneNumberTemplate">
  2. <StackPanel Orientation="Horizontal">
  3. <TextBox Name="tbPN1" />
  4. <TextBox Name="tbPN2" />
  5. <TextBox Name="tbPN3" />
  6. <TextBox Name="tbPN4" />
  7. <TextBox IsReadOnly="True">
  8. <TextBox.Text>
  9. <MultiBinding StringFormat="{}+{0} ({1}) {2} - {3}">
  10. <Binding Path="Text" ElementName="tbPN1" UpdateSourceTrigger="PropertyChanged" />
  11. <Binding Path="Text" ElementName="tbPN2" UpdateSourceTrigger="PropertyChanged" />
  12. <Binding Path="Text" ElementName="tbPN3" UpdateSourceTrigger="PropertyChanged" />
  13. <Binding Path="Text" ElementName="tbPN4" UpdateSourceTrigger="PropertyChanged" />
  14. </MultiBinding>
  15. </TextBox.Text>
  16. </TextBox>
  17. </StackPanel>
  18. </DataTemplate>
  19.  
  20. public class PhoneNumber : INotifyPropertyChanged {
  21.  
  22. public event PropertyChangedEventHandler PropertyChanged;
  23.  
  24. private void OnPropertyChanged(string propertyName) {
  25. var handler = PropertyChanged;
  26. if (handler != null) {
  27. PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  28. }
  29. }
  30.  
  31. private string m_CountryCode;
  32. public string CountryCode {
  33. get { return m_CountryCode; }
  34. set {
  35. m_CountryCode = value;
  36. ComputeFullNumber();
  37. OnPropertyChanged("CountryCode");
  38. }
  39. }
  40.  
  41. private string m_AreaCode;
  42. public string AreaCode {
  43. get { return m_AreaCode; }
  44. set {
  45. m_AreaCode = value;
  46. ComputeFullNumber();
  47. OnPropertyChanged("AreaCode");
  48. }
  49. }
  50.  
  51. private string m_Number;
  52. public string Number {
  53. get { return m_Number; }
  54. set {
  55. m_Number = value;
  56. ComputeFullNumber();
  57. OnPropertyChanged("Number");
  58. }
  59. }
  60.  
  61. private string m_Suffix;
  62. public string Suffix {
  63. get { return m_Suffix; }
  64. set {
  65. m_Suffix = value;
  66. ComputeFullNumber();
  67. OnPropertyChanged("Suffix");
  68. }
  69. }
  70.  
  71. public string FullNumber { get; private set; }
  72.  
  73. private void ComputeFullNumber() {
  74. FullNumber = string.Format("+{0} ({1}) {2} - {3}", m_CountryCode, m_AreaCode, m_Number, m_Suffix);
  75. OnPropertyChanged("FullNumber");
  76. }
  77.  
  78. }
  79.  
  80. <DataTemplate x:Key="PhoneNumberTemplate">
  81. <StackPanel Orientation="Horizontal">
  82. <TextBox Text="{Binding Path=CountryCode, UpdateSourceTrigger=PropertyChanged}" />
  83. <TextBox Text="{Binding Path=AreaCode, UpdateSourceTrigger=PropertyChanged}" />
  84. <TextBox Text="{Binding Path=Number, UpdateSourceTrigger=PropertyChanged}" />
  85. <TextBox Text="{Binding Path=Suffix, UpdateSourceTrigger=PropertyChanged}" />
  86. <TextBox Text="{Binding Path=FullNumber, Mode=OneWay}" IsReadOnly="True" />
  87. </StackPanel>
  88. </DataTemplate>
  89.  
  90. <TextBox Text="{Binding PhoneNumber, Converter={StaticResource PhoneNumberConverter, ConverterParameter=CountryCode}}"/>
  91. <TextBox Text="{Binding PhoneNumber, Converter={StaticResource PhoneNumberConverter, ConverterParameter=AreaCode}}"/>
  92. ...
Add Comment
Please, Sign In to add comment