2009-07-22 4 views
7

У меня есть два текстовых поля, один для поля адреса фактуры и один для поля адрес доставки. Когда пользователь вводит что-то в платежный адрес текстовом поле текстовое поле адрес доставки получает то же значение в связи со следующим связывания сценария:WPF MultiBinding

<TextBox Name="txtBillingAddress" Text="{Binding BillingAddress, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> 

<TextBox Name="txtShippingAddress"> 
    <TextBox.Text> 
     <MultiBinding Converter="{StaticResource AddressConverter}"> 
     <Binding ElementName="txtBillingAddress" Path="Text" Mode="OneWay" /> 
     <Binding Path="ShippingAddress" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" /> 
     </MultiBinding> 
    </TextBox.Text> 
</TextBox> 

Это прекрасно работает до точки. Я также хочу, чтобы адрес доставки привязывался к моей базе данных в качестве платежного адреса. Моя проблема заключается в том, что в то время как текстовое поле адреса доставки заполняется тем, что указано в платежном адресе, метод ConvertBack не запускается, пока это происходит. Он запускается только в том случае, если что-то вводится непосредственно в текстовое поле адреса доставки.

Что мне не хватает?

+0

Где находится элемент управления txtAddress в вашем MultiBinding? Вы хотели поставить txtBillingAddress? –

+0

Да, извините за путаницу. Моя ситуация немного сложнее, поэтому я не мог сделать прямую копию + вставку. – David

ответ

5

Возможно, это было бы проще реализовать в вашей ViewModel?

public string BillingAddress{ 
    set{ 
     billingAddress = value; 
     firePropertyChanged("BillingAddress"); 
     if(string.isNullOrEmpty(ShippingAddress) 
     { 
      ShippingAddress = value; //use the property to ensure PropertyChanged fires 
     } 
    } 
    get{ return billingAddress; } 
} 
+0

Это работает красиво. Благодарю. – David

 Смежные вопросы

  • Нет связанных вопросов^_^