C# 将枚举值绑定到标签XAML

C# 将枚举值绑定到标签XAML,c#,wpf,xaml,enums,C#,Wpf,Xaml,Enums,我正在使用枚举字段跟踪程序的状态 public enum StatiMacchina { InAvvio = 1, Pronta = 2, InLavorazione = 3, InMovimento = 4, InAttesa = 5, InErrore = 6 } 我想绑定follow字段的状态(在主窗口中) 使用XAML中的标签 <TextBlock Text="{Binding Pat

我正在使用枚举字段跟踪程序的状态

public enum StatiMacchina {
        InAvvio = 1,
        Pronta = 2,
        InLavorazione = 3,
        InMovimento = 4,
        InAttesa = 5,
        InErrore = 6
}
我想绑定follow字段的状态(在主窗口中)

使用XAML中的标签

<TextBlock Text="{Binding Path=StatoMacchina, Converter={StaticResource StatoMacchinaToString}}" />
当我的程序启动时,标签包含正确的值,但当我更新StatoMacchina变量的状态时,标签不会得到刷新。
我能做些什么???

现在你的用户界面无法知道有什么变化

您需要使用INotifyPropertyChaged。您应该从代码中提取属性,并将其放在作为窗口的DataContext的ViewModel中。该视图模型将实现接口
INotifyPropertyChaged
。下面是实现INotifyPropertyChaged所需的全部内容

public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propName = null)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
    }
您需要展开属性的setter来设置值,然后触发OnPropertyChanged事件。就这样

public StatiMacchina StatoMacchina { 
    get; 
    set{
       backingVariable = value;
       OnPropertyChanged();
    } 
}
这将触发一个事件,您的UI可以通过将xaml更改为此来侦听该事件

<TextBlock Text="{Binding Path=StatoMacchina, Converter={StaticResource StatoMacchinaToString}, UpdateSourceTrigger=PropertyChanged}" />


OnPropertyChanged(“StatoMacchina”)
@EdPlunkett忘记了包括我推荐的OnPropertyChanged实现。如果使用[CallerMemberName]标记,则不必指定property@rmn32你对我来说太快了!我以前从未见过
CallerMemberName
属性的东西;由于种种原因,我从事的主要项目仍然是.NET4.0。那很酷。
public StatiMacchina StatoMacchina { 
    get; 
    set{
       backingVariable = value;
       OnPropertyChanged();
    } 
}
<TextBlock Text="{Binding Path=StatoMacchina, Converter={StaticResource StatoMacchinaToString}, UpdateSourceTrigger=PropertyChanged}" />