c# wpf xaml binding textblock

c# - WPF TextBlock vinculante



wpf templates (1)

Intento enlazar propiedad Text de TextBlock a mi propiedad, pero el texto no se actualiza.

XAML

<Window x:Name="window" x:Class="Press.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Title="Press analyzer" Height="350" Width="525" ContentRendered="Window_ContentRendered" d:DataContext="{d:DesignData MainWindow}"> ... <StatusBar Name="StatusBar" Grid.Row="2" > <TextBlock Name="StatusBarLabel" Text="{Binding Message}"/> </StatusBar> </Window>

DO#

public partial class MainWindow : Window, INotifyPropertyChanged { private string _message; public string Message { private set { _message = value; OnPropertyChanged("Message"); } get { return _message; } } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } }


Establezca DataContext of MainWindow a sí mismo en el constructor de MainWindow para resolver el enlace:

public MainWindow() { InitializeComponent(); this.DataContext = this; }

O

Si no configura DataContext, debe resolver el enlace explícitamente desde XAML utilizando RelativeSource :

<TextBlock Name="StatusBarLabel" Text="{Binding Message, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>

Nota : siempre puede ir y verificar la ventana de salida de Visual Studio para detectar cualquier error de enlace.