2009-07-22 13 views
7

Tengo dos cuadros de texto, uno para un campo de dirección de facturación y otro para un campo de dirección de envío. Cuando el usuario escribe algo en el texto de la dirección de facturación de la caja del cuadro de texto dirección de envío recibe el mismo valor debido a lo siguiente escenario de unión: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> 

Esto funciona bien hasta cierto punto. También quiero que la dirección de envío se vincule a mi entidad de base de datos como la dirección de facturación. Mi problema es que, aunque el cuadro de texto de la dirección de envío está lleno con lo que se escribe en la dirección de facturación, el método ConvertBack no se activa mientras esto sucede. Solo se activa si algo se escribe directamente en el cuadro de texto de la dirección de envío.

¿Qué me estoy perdiendo?

+0

¿Dónde reside el control txtAddress en su MultiBinding? ¿Querías poner txtBillingAddress? –

+0

Sí, disculpe la confusión. Mi situación es un poco más compleja, así que no pude copiar ni pegar directamente. – David

Respuesta

5

Quizás esto sería más fácil de implementar en su 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

Esto funciona muy bien. Gracias. – David

Cuestiones relacionadas