Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF MultiBinding

I have two text boxes, one for a billing address field and one for a shipping address field. When the user types something into the the billing address text box the shipping address text box gets the same value due to the following binding scenario:

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

This works fine up to a point. I also want the shipping address to be bound to my database entity as the billing address is. My problem is that while the shipping address text box is populated with what is typed in the billing address, the ConvertBack method is not fired while this is happening. It is only fired if something is typed directly into the shipping address text box.

What am I missing?

like image 960
David Avatar asked Jul 22 '09 21:07

David


People also ask

How do you use multi binding in WPF?

MultiBinding Class in WPF. The class MultiBinding allows you to associate a target property of the association with a list of source properties and then apply logic to produce a value with the inputs specified. This example shows how to use the class MultiBinding to display multiple properties of the Customer class in a single line in a ListBox.

What is multibinding and how do I do it?

Multibinding takes multiple values and combines them into another value. There are two ways to do multibinding, either using StringFormat or by a converter. The StringFormat is simple compared to a converter, so we will start with that first.

What is the multibinding and imultivalueconverter in WPF?

This article explains the Multibinding and IMultiValueConverter in WPF. In some cases we might have several fields in your data model that represent a name (first name, middle name and last name) that you want to combine into a single entry in a list. Multibinding takes multiple values and combines them into another value.

What are multi triggers in WPF?

So far they have all been based on a single property, but WPF also supports multi triggers, which can monitor two or more property conditions and only trigger once all of them are satisfied.


1 Answers

Maybe this would be easier to implement in your 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; }
}
like image 101
Rob Fonseca-Ensor Avatar answered Sep 23 '22 21:09

Rob Fonseca-Ensor