2009-07-22 12 views
7

Mam dwa pola tekstowe, jeden dla pola adresu rozliczeniowego i jeden dla pola adresu wysyłki. Gdy użytkownik wpisze coś w tekście adresowej Billing box pole tekstowe adres wysyłki dostaje taką samą wartość w związku z następującym wiążącej scenariusza: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> 

To działa dobrze aż do pewnego momentu. Chcę również, aby adres wysyłki był powiązany z moją jednostką bazy danych, ponieważ jest to adres rozliczeniowy. Mój problem polega na tym, że gdy pole tekstowe adresu wysyłki jest wypełnione tym, co jest wpisane w adresie rozliczeniowym, metoda ConvertBack nie jest uruchamiana, gdy tak się dzieje. Jest uruchamiany tylko wtedy, gdy coś jest wpisane bezpośrednio w polu tekstowym adresu wysyłki.

Czego mi brakuje?

+0

gdzie znajduje się kontrola txtAddress w twoim wiązaniu MultiBinding? Czy chcesz umieścić txtBillingAddress? –

+0

Tak, przepraszam za zamieszanie. Moja sytuacja jest nieco bardziej skomplikowana, więc nie mogłem wykonać bezpośredniej kopii + wklejenia. – David

Odpowiedz

5

Być może byłoby to łatwiejsze do wdrożenia w 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

To działa ładnie. Dzięki. – David

Powiązane problemy