【问题标题】:Change Label Content prop from ViewModel从 ViewModel 更改标签内容道具
【发布时间】:2019-01-02 22:30:27
【问题描述】:

我有Label 和Slider 的表格。

我正在尝试通过从 ViewModel 属性获取值来更改 Label.Content。 另外,我在 ViewModel 中使用Slider 更新了该值,但是当我更改滑块值时,属性会更新,但在Label 处我看不到更新的值。 Content 具有该值,这是在运行程序之后。

这里是xaml代码:

<Slider 
    Value="{Binding MathLevel, Mode=TwoWay}"
    Width="200" />
<Label
    Content="{Binding MathLevel}"
    HorizontalAlignment="Left"
    Margin="157,250,0,0"
    VerticalAlignment="Top" />

ViewModel 中的属性

public int MathLevel
{
    get => user.Skills [0].Level;
    set {
        user.Skills [0].Level = value;
        OnPropertyChanged("Math skill level");
    }
}

这里是 User.cs

 class User
 {
     public List<Skill> Skills {get;set;} = new List<Skill>();
 }

我只想将Label 上的Content 更改为来自属性MathSkill 的值

【问题讨论】:

    标签: c# wpf mvvm binding


    【解决方案1】:

    看起来 OnPropertyChanged() 调用中存在问题。它应该在引号中包含要更新的属性的名称

    public int MathLevel
    {
        get => user.Skills [0].Level;
        set
        {
            user.Skills [0].Level = value;
            OnPropertyChanged("MathLevel");
        }
    }
    

    【讨论】:

    • 更安全地调用OnPropertyChanged(() =&gt; this.MathLevel); 以便编译器警告您任何拼写错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多