簡體   English   中英

如何將2個文本框綁定到一個屬性?

[英]How to bind 2 textboxes to one property?

我有一個適當的PhoneNumber ,在UI中,我有2個文本框,一個是前綴,另一個是后綴,如何將其綁定到屬性? (DataContext內部的屬性)。

<TextBox Grid.Column="0" MaxLength="3" /> //Prefix
<TextBlock Grid.Column="1" Text="-" />
<TextBox Grid.Column="2" /> //Postfix

在此處輸入圖片說明

我認為它起作用的唯一方法是使用textbox1.Text + textbox2.Text ...后面的代碼。還有更好的方法嗎?

提前致謝 :)

只需在數據上下文中使用另外兩個屬性

未遵守或測試代碼

public string PhoneNumber { get; set; }
public string Prefix
{
    get
    {
        return PhoneNumber.Substring(0, 3);
    }
    set
    {
        // replace the first three chars of PhoneNumber
        PhoneNumber = value + PhoneNumber.Substring(3);
    }
}
public string Postfix
{
    get
    {
        return PhoneNumber.Substring(3);
    }
    set
    { 
        // replace the  chars of starting from index 3 of PhoneNumber
        PhoneNumber =  PhoneNumber.Substring(0, 3) + value;
    }
}

我認為您可以為此目的使用Converter,以一種方式進行的示例如下所示:

在此我的號碼是一個string 000-000000,但是您可以確定地更改它。

在XAML中:

<Window.Resources>
    <conv:PostixConverter x:Key="PostfixConv" xmlns:conv="clr-namespace:Example.Converters"/>
    <conv:PrefixConverter x:Key="PrefixConv" xmlns:conv="clr-namespace:Example.Converters"/>
</Window.Resources>
<StackPanel>     
    <TextBox  MaxLength="3" Text="{Binding Number, Converter={StaticResource PrefixConv}}"/> 
    <TextBlock  Text="-" />
    <TextBox Text="{Binding Number, Converter={StaticResource PostfixConv}}"/>
</StackPanel>

並在后面的代碼中:

namespace Example.Converters
{
  public class PrefixConverter : IValueConverter
  {
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null) return null;
        else return ((string)value).Substring(0, 3);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
  }

  public class PostixConverter : IValueConverter
  {
      public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
        if (value == null) return null;
        else return ((string)value).Substring(4);
      }

      public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
        throw new NotImplementedException();
      }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM