我有一个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。
答案 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”。当我删除它时,它工作。