Solved

WPF textbox - how to refresh associated textboxes when data changes

Posted on 2015-01-11
3
148 Views
Last Modified: 2015-01-12
Hi
I have three textboxes. one to hold a value, one to hold a percentage and one to hold the answer to a calculation using the value and percentage.
They are all bound to the current view and work correctly on initial load of data.

They are defined like this
<TextBox x:Name="AppLicPer" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Left"  Margin="5" TextWrapping="Wrap" Text="{Binding Path=CurrentlyViewingApplication.AppLicPer}"
 VerticalContentAlignment="Center" TextAlignment="Right" Width="50" />

<TextBox x:Name="AppLicValue" Grid.Row="1" Grid.Column="3" HorizontalAlignment="Left"  Margin="5" TextWrapping="Wrap" Text="{Binding Path=CurrentlyViewingApplication.AppLicValue}"
 VerticalContentAlignment="Center" TextAlignment="Right" Width="50" />

<TextBox x:Name="AppAmountDue" Grid.Row="1" Grid.Column="4" HorizontalAlignment="Left"  Margin="5" TextWrapping="Wrap" Text="{Binding Path=CurrentlyViewingApplication.AppAmountDue}"
 VerticalContentAlignment="Center" TextAlignment="Right" Width="50" />

If I change either the value (AppLicValue) or the percentage (AppLicPer) how do I get the textbox that holds the  answer to refresh (AppAmountDue)?

In winform I would use an after_update event, recalc and write the answer to the textbox.

How can I achieve this in WPF?
Thanks
Andy
0
Comment
Question by:ieg
  • 2
3 Comments
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 40543410
You need to set te Mode on your data binding:

Text="{Binding Path=CurrentlyViewingApplication.AppLicValue, Mode=TwoWay}"
0
 

Author Comment

by:ieg
ID: 40544091
Hi Eric
Thanks for the comment - I use your web site regularly, great source of info

I experimented with your idea. The Mode=TwoWay seems to control the binding of the control itself and not the content of other textboxes
My problem seems to have been caused by my use of sub properties CurrentlyViewingApplication.AppLicPer
Doing this didn't give me any way of controlling what happened when the AppLicPer value changed (only when something on CurrentlyViewingApplication changed and I didn't want this area re calculating every time something changed anywhere on the record.)

So I created a method specifically for this control binding and that allowed me to do a NotifyPropertyChanged on the AppAmountDue control

public decimal? AppLicPer
        {
            get
            {
                if (_CurrentlyViewingApplication != null)
                    return _CurrentlyViewingApplication.AppLicPer;
                else return null;
            }
            set
            {
                _CurrentlyViewingApplication.AppLicPer = value.Value;
                NotifyPropertyChanged("AppAmountDue");
            }

        }

These new MVVM concepts take some getting used to when coming from a traditional winform background
Thanks for your help
0
 
LVL 70

Accepted Solution

by:
Éric Moreau earned 500 total points
ID: 40544261
have you also tried to notify the change of your AppLicPer?

NotifyPropertyChanged("AppLicPer");
NotifyPropertyChanged("AppAmountDue");
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now