WPF MultiBinding
-
19-09-2019 - |
Pergunta
Eu tenho duas caixas de texto, um para um campo de endereço de cobrança e um para um campo de endereço de entrega. Quando o usuário digita algo no texto o endereço de cobrança caixa caixa de endereço de envio de texto recebe o mesmo valor em função do cenário de ligação seguinte:
<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>
Isso funciona bem até um certo ponto. Eu também quero o endereço de entrega para ser ligado a minha entidade banco de dados como o endereço de cobrança é. Meu problema é que enquanto a caixa de texto o endereço de entrega é preenchida com o que é digitado no endereço de cobrança, o método ConvertBack não é acionado enquanto isso está acontecendo. Ele só é acionado se algo é digitado diretamente na caixa de texto endereço de entrega.
O que eu estou ausente?
Solução
Talvez isso seria mais fácil de implementar em seu 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; }
}