为什么在首先显示窗口时文本框不会更新值

时间:2013-09-26 13:25:10

标签: c# wpf wpftoolkit caliburn.micro

我有一个DoubleTextbox(来自Extended WPF Toolkit),它被添加到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的值。

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

我正在使用caliburn micro。

3 个答案:

答案 0 :(得分:2)

财产名称不正确。它应该是MyDouble而不是MyDoubleValue

Value="{Binding MyDouble}"

答案 1 :(得分:1)

您使用的是默认值:

private double myDouble=1.0;

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

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

或者

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

答案 2 :(得分:0)

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