C# 为什么第一次显示windows时文本框不更新为值
我有一个DoubleTextbox(来自扩展WPF工具包),它被添加到gris中,如下所示: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
<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已更改事件。事实上,对象创建发生在绑定发生之前,因此在对象创建过程中引发的任何事件都不会被任何其他对象看到,因为在该阶段它们没有订阅。