C# WPF绑定视图数据不存在';无法正确更新

C# WPF绑定视图数据不存在';无法正确更新,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我有以下代码部分: <TextBlock Margin="5,3,5,1" Foreground="White" FontWeight="Bold" FontStyle="Italic" TextAlignment="Center" Text="{Binding AntennaName}"/> 我检查并确认在我的实际代码中,AntennaName属性确实更改,但textblock没有更改 谁能解释一下为什么会这样?我对mvvm场景还很陌生。试

我有以下代码部分:

<TextBlock 
      Margin="5,3,5,1" Foreground="White" 
      FontWeight="Bold" FontStyle="Italic" TextAlignment="Center"
      Text="{Binding AntennaName}"/>
我检查并确认在我的实际代码中,
AntennaName
属性确实更改,但textblock没有更改

谁能解释一下为什么会这样?我对mvvm场景还很陌生。

试试这个-

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

问题出在为用户控件设置
DataContext
的方式上。不知何故,textBlock没有从其父级(UserControl)继承DataContext。因此,明确要求它可能会奏效

解释

默认情况下,UI元素在其DataContext中搜索绑定,除非明确指定查找其他位置

此外,如果尚未为控件设置DataContext,它将从其父控件继承DataContext,并在其中查找Binding属性。如果在父DataContext上也找不到binding属性,则绑定会以静默方式失败,您将看到的只是空字符串

您始终可以在输出窗口中查找绑定失败。如果您查看输出窗口,您将看到您的属性
AntennaName


请参阅-

您是否将Window/UserControl绑定到您的ViewModel?我想,Danilo想说的是…DataContext设置是否正确?请检查您的
输出
窗口是否存在
绑定
错误。我的DataContext设置为,因此我非常确定这是正确的,但我可能是错误的,因此我可以使用您的帮助。你是什么意思?TextBlock.Text根本不改变,或者只在天线名称更新时改变?我的意思是,文本块。文本在加载时被设置为AntennaName?这实际上部分解决了我的问题(文本块现在显示“AntennaName”而不是实际名称),但我确信我是否可以继续挖掘这项itll工作。谢谢
<TextBlock Text="{Binding DataContext.AntennaName,
           RelativeSource={RelativeSource FindAncestor,
           AncestorType=UserControl}}"/>