C# 为什么第一次显示windows时文本框不更新为值

C# 为什么第一次显示windows时文本框不更新为值,c#,wpf,wpftoolkit,caliburn.micro,C#,Wpf,Wpftoolkit,Caliburn.micro,我有一个DoubleTextbox(来自扩展WPF工具包),它被添加到gris中,如下所示: <xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" FormatString="F2" Value="{Binding MyDoubleValue}" Maximum="100" Minimum=".0001" DefaultValue="1.0"/> private double myDouble=1.0; public double MyDo

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

<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" FormatString="F2" Value="{Binding MyDoubleValue}" Maximum="100" Minimum=".0001" DefaultValue="1.0"/>
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的值)

为什么它在启动时不在窗口上显示其值


我正在使用caliburn micro。

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

Value="{Binding MyDouble}"

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

Value="{Binding MyDouble}"

您正在使用默认值:

private double myDouble=1.0;
因此,
NotifyOfPropertyChange
尚未为
MyDouble
调用,WPF不知道该值

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


在初始化过程中调用NotifyOfPropertyChange(()=>this.MyDouble);。

您使用的是默认值:

private double myDouble=1.0;
因此,
NotifyOfPropertyChange
尚未为
MyDouble
调用,WPF不知道该值

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


在初始化过程中调用NotifyOfPropertyChange(()=>this.MyDouble);。

问题在于XAML上的DefaultValue=“1.0”。当我删除它时,它工作正常。

问题在于DefaultValue=“1.0”在XAML上。当我删除它时,它工作了。

这可能是一个输入错误。它是一种类型。MyDoubleValue在我更改它时获得textbox的值这一事实表明我的绑定工作了。它可能是一个输入错误。它是一种类型。MyDoubleValue在我更改它时获得textbox的值这一事实表明我的绑定工作了。如果属性具有值e在第一次绑定之前,没有理由引发属性更改事件。事实上,对象创建发生在绑定之前,因此在对象创建期间引发的任何事件都不会被任何其他对象看到,因为他们在该阶段没有订阅。如果属性在第一次绑定之前具有值,则没有理由引发属性更改rty已更改事件。事实上,对象创建发生在绑定发生之前,因此在对象创建过程中引发的任何事件都不会被任何其他对象看到,因为在该阶段它们没有订阅。