简体   繁体   中英

WPF binding view data doesn't update correctly

I have this code part:

<TextBlock 
      Margin="5,3,5,1" Foreground="White" 
      FontWeight="Bold" FontStyle="Italic" TextAlignment="Center"
      Text="{Binding AntennaName}"/>

and in my viewmodel:

private string antennaName;
public string AntennaName
{
    get { return antennaName; }
    set { antennaName = value; OnPropertyChanged("AntennaName"); }
}

I checked and I can confirm that in my actual code the AntennaName property does change but the textblock does not.

Can anyone please explain why is this happening? I'm pretty new to the mvvm scene.

Try this -

<TextBlock Text="{Binding DataContext.AntennaName,
           RelativeSource={RelativeSource FindAncestor,
           AncestorType=UserControl}}"/>

The problem somewhere lies in the way you are setting the DataContext for your UserControl. Somehow, textBlock is not inheriting the DataContext from its parent(UserControl). So, explicitly asking for it might work.

Explanation

UI elements by default search for the Binding in its DataContext unless explicitly specified to look into some other place.

Also, in case you haven't set the DataContext for the control, it will inherit DataContext from its parent Control and look for the Binding property in it. In case the binding property is not found on the parent DataContext either, binding fails silently and all you will see is empty string.

You can always look for Binding failures in the output window. If you look in the output window, you will see your property AntennaName over there.

Refer - Data Binding Overview

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM