0

我有一个 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。

4

3 回答 3

2

物业名称不正确。它应该是 MyDouble 而不是 MyDoubleValue

Value="{Binding MyDouble}"
于 2013-09-26T13:27:57.337 回答
1

您正在使用默认值:

private double myDouble=1.0;

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

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

或者

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

于 2013-09-26T13:28:19.600 回答
0

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

于 2013-09-29T10:32:03.393 回答