2009-07-22 12 views
7

Ho due caselle di testo, una per il campo dell'indirizzo di fatturazione e una per il campo dell'indirizzo di spedizione. Quando l'utente digita qualcosa nella barra degli indirizzi del testo della fatturazione casella casella di testo indirizzo di spedizione ottiene lo stesso valore a causa del seguente scenario di rilegatura:MultiBinding WPF

<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> 

Questo funziona bene fino a un certo punto. Desidero inoltre che l'indirizzo di spedizione sia associato alla mia entità di database come l'indirizzo di fatturazione. Il mio problema è che mentre la casella di testo dell'indirizzo di spedizione è popolata con ciò che è digitato nell'indirizzo di fatturazione, il metodo ConvertBack non viene attivato mentre questo sta accadendo. Viene attivato solo se qualcosa viene digitato direttamente nella casella di testo dell'indirizzo di spedizione.

Cosa mi manca?

+0

dove risiede il controllo txtAddress in MultiBinding? Volevi mettere txtBillingAddress? –

+0

Sì, mi dispiace per la confusione. La mia situazione è un po 'più complessa quindi non potrei fare una copia diretta + incolla. – David

risposta

5

Forse questo sarebbe più semplice da implementare nel 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

Funziona bene. Grazie. – David

Problemi correlati