为什么当窗口首先显示时,文本框没有更新值

本文关键字:文本 更新 窗口 显示 为什么 | 更新日期: 2023-09-27 18:32:50

我有一个DoubleTextbox(来自扩展WPF工具包),它被添加到gris中,如下所示:

<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" FormatString="F2" Value="{Binding MyDoubleValue}" Maximum="100" Minimum=".0001" DefaultValue="1.0"/>

MyDouble 值定义如下:

private double myDouble=1.0;
public double MyDouble 
{
    get
    {
        return this.myDouble ;
    }
    set
    {
        if (Math.Abs(this.myDouble - value) > 0.0000000000001)
        {
            this.myDouble = value;
            this.NotifyOfPropertyChange(() => this.MyDouble );
        }
    }
}

当我运行应用程序并查看此文本框的值时,它是空白的,但是如果我使用向上箭头,它会显示 2.0(这意味着它正确检测到 MyDouble 的值。

为什么它在启动时没有在窗口上显示其值?

我正在使用卡利本微。

为什么当窗口首先显示时,文本框没有更新值

属性名称不正确。它应该是MyDouble而不是MyDoubleValue

Value="{Binding MyDouble}"

您使用的是默认值:

private double myDouble=1.0;

因此,尚未调用NotifyOfPropertyChange MyDouble并且 WPF 不知道该值。

在初始化期间,在ViewModel的构造函数或其他位置设置值(通过属性,而不是 backer 字段)。

在初始化期间调用NotifyOfPropertyChange(() => this.MyDouble );

问题是 XAML 上的默认值="1.0"。 当我删除它时,它起作用了。